切換
舊版
前往
大廳
主題

ZeroJudge - d132: 00340 - Master-Mind Hints 解題心得

Not In My Back Yard | 2019-07-11 23:45:56 | 巴幣 0 | 人氣 218

題目連結:


題目大意:
給定一正整數 N (N ≦ 1, 000, N = 0 時停止程式),代表緊接著的一列有 N 個正整數,代表出題者出的數列(每個數字介於 1 ~ 9 之間)。設此序列為 S 、 S 、 …… 、 S

接著不定數量列的輸入,每列也給定 N 個正整數,其代表解題者這輪猜的數列(數字全部為 0 時,代表這一整組測試資料的結尾)。設此序列為 G 、 G 、 …… 、 G

當 S = G 時,則得到一個「A」;而 S = G (i ≠ j)時,得到一個「B」。得到「A」優先於得到「B」,且每個 G 只能對應到一個 S ,反之亦然。因此例如題目數列為
1 2 3 4 ,而解題者猜 1 1 5 4 。則出題者要回答 1A0B ,而不是 0A1B 也不是 1A1B。

將每個解題者的猜測結果之幾 A 幾 B 以(A, B)的格式輸出,輸出格式參見範例輸出。



範例輸入:
4
1 3 5 5
1 1 2 3
4 3 3 5
6 5 5 1
6 1 3 5
1 3 5 5
0 0 0 0
10
1 2 2 2 4 5 6 6 6 9
1 2 3 4 5 6 7 8 9 1
1 1 2 2 3 3 4 4 5 5
1 2 1 3 1 5 1 6 1 9
1 2 2 5 5 5 6 6 6 7
0 0 0 0 0 0 0 0 0 0
0


範例輸出:
Game 1:
    (1,1)
    (2,0)
    (1,2)
    (1,2)
    (4,0)
Game 2:
    (2,4)
    (3,2)
    (5,0)
    (7,0)


解題思維:
需要注意的點只有判斷幾 A 幾 B 的時候。需要兩個布林陣列紀錄對應位置的出題者、解題者的數字有無(被)對應。A 的數量可以在輸入解題者猜的數列的時候統計出來,相同位置且相同數字即是一個「A」,此時就把出題者跟解題者的數字設為「有對應」。

接著,再用迴圈跑一次解題者的數列,看還有誰沒有對應的。沒有對應的再從出題者的數列中看與哪些數字相同且沒有被對應的,此即為一個「B」。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作