題目連結
題意:
環狀排列的牌,玩法是每次根據"指令的字母數"移動若干步
走到一張目標牌並移除,一直到最後
這題給你所有指令與拿走的牌,要問原始的牌順序為何
輸入測資先給定 N 張牌
接著 N 行依序是牌的名稱與指令 (第 N 個指令拿走最後一張牌)
輸出則為原本的牌(按順序列出名稱)
如範例測資:
原始有13張牌
QH 4C AS 8D KH 2S 7D 5C TH JH 3S 6C 9D
第一個指令是ACE(3步),會拿走AS,也就是第3個位置是AS
拿走AS後長這樣 :
QH 4C 8D KH 2S 7D 5C TH JH 3S 6C 9D
第二個指令是TWO(3步),繼續走3步,會拿走2S,也就是"原本的"第6個位置是2S
拿走後長這樣 :
QH 4C 8D KH 7D 5C TH JH 3S 6C 9D
第三個指令THREE(5步),拿走3S後:
QH 4C 8D KH 7D 5C TH JH 6C 9D
解法:
要根據指令重建序列
已知的是會從頭開始
根據指令重建即可
配合一個布林陣列,如果已經移除的改成true
下次走訪就直接略過
例如要走3步,第3步遇到已經移除的
就依序往下找
程式(Java):
題意:
環狀排列的牌,玩法是每次根據"指令的字母數"移動若干步
走到一張目標牌並移除,一直到最後
這題給你所有指令與拿走的牌,要問原始的牌順序為何
輸入測資先給定 N 張牌
接著 N 行依序是牌的名稱與指令 (第 N 個指令拿走最後一張牌)
輸出則為原本的牌(按順序列出名稱)
如範例測資:
原始有13張牌
QH 4C AS 8D KH 2S 7D 5C TH JH 3S 6C 9D
第一個指令是ACE(3步),會拿走AS,也就是第3個位置是AS
拿走AS後長這樣 :
QH 4C 8D KH 2S 7D 5C TH JH 3S 6C 9D
第二個指令是TWO(3步),繼續走3步,會拿走2S,也就是"原本的"第6個位置是2S
拿走後長這樣 :
QH 4C 8D KH 7D 5C TH JH 3S 6C 9D
第三個指令THREE(5步),拿走3S後:
QH 4C 8D KH 7D 5C TH JH 6C 9D
第四個指令FOUR(4步),從6C開始,到9D後會從頭QH開始,拿走4C
QH 8D KH 7D 5C TH JH 6C 9D
依此類推...
要根據指令重建序列
已知的是會從頭開始
根據指令重建即可
配合一個布林陣列,如果已經移除的改成true
下次走訪就直接略過
例如要走3步,第3步遇到已經移除的
就依序往下找
程式(Java):
留言
張貼留言