a291: nAnB problem
內容
我們常用數字密碼鎖來保護重要的東西,但要是不小心忘了密碼麻煩就大了!
以四位數字的密碼鎖為例,我們最多要嘗試 10^4=10000 次才能解鎖。這時候要是
有辦法知道目前嘗試的密碼錯了幾個字,那解鎖的速度就快多了。請寫一個程式,
可以判斷每組數字跟正確答案差了幾個字。
輸入
多筆輸入。
第一行有四個介於 0-9 之間的數字,代表正確的密碼
第二行有一個整數 n,1<=n<=10000,代表接下來嘗試 n 組密碼
接下來有 n 行,每行有四個介於 0-9 之間的數字,每行各代表一組嘗試的密碼。
1 2 3 4
4
1 1 4 5
1 2 4 3
1 1 4 4
4 3 2 11 1 1 5
4
1 1 1 1
0 9 2 8
1 5 2 3
1 1 5 1
輸出
輸出 n 行。
對於每組嘗試的密碼,若有 p 個數字的值正確,且在正確的位子上,
另外有 q 個數字的值正確,但不在正確的位子上,
輸出 pAqB。
範例見測資。
1A1B
2A2B
2A0B
0A4B
3A0B
0A0B
1A1B
2A2B
解題思路
開兩個陣列 ansCount 和 testCount 分別保留 ans 和 test 無法完全配對的數字。
再來用迴圈判斷,
判斷時會有三種情況
- 完全配對 (A)
A+1
- 無法配對,且無法和之前無法配對的數字配對
把他記錄進無法配對的陣列
- 無法配對,但可以和之前無法配對的數字配對 (B)
B+1 , 把和他配對的數字刪掉
最後輸出得到的 A 和 B 即可。
完整程式碼
AC (0.2s, 96KB)
|