寒假回來自己訓練的第一道題,就給懵住了╮(╯▽╰)╭
題目描述
實現乙個經典"猜數字"遊戲。 給定答案序列和使用者猜的序列,統計有多少數字位置正確(a),有多少數字在兩個序列都出現過但位置不對(b)。
輸入輸入包含多組資料。 每組輸入第一行為序列長度n,第二行是答案序列,接下來是若干猜測序列。 猜測序列全0時該組資料結束。 n=0時輸入結束。
輸出看樣例。
樣例輸入
41 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
101 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,對於每個數字(1-9),統計二者出現的次數c1和c2,則min(c1,c2)就是該數字對於b的貢獻(也就是答案和猜測序列有多少對相同的數字),最後減去a(相同且在同一條序列)的部分就可以啦~(:з)∠)
**如下:
#include
#include
#include
#include
using namespace std;
const
int maxn=
1010
;int
main()
if(b[0]
==0)//也就是輸入0 0 0 0的時候跳出
break
;for
(int i=
1;i<=
9;i++
)//將1到9每個數字都試一遍
b=b+
min(c1,c2)
;//去最小的原因就是為了找出此時i的時候相等的對數(多少對)
}printf
(" (%d,%d)\n"
,a,b-a);}
}return0;
}
猜數字遊戲的提示
題目來自劉汝佳編著的 演算法競賽入門經典 第二版 題目描述 我的 include include using namespace std intmain for int i 0 i n i cout t a b return0 答案的 include define maxn 1010 intmain...
猜數字遊戲及相關例題
一 完成猜數字遊戲 在這個 中我用了乙個c語言中很少用到的goto語句 這個語句不被廣泛看好,但是這個語句的語義是可以改變程式流程,直接轉到它所指向的語句,而break僅僅只能跳出當前迴圈,但相對break而言,c語言中goto語句更容易引起程式崩潰,所以很多人不推薦用它,以至於很多人不太明白它的用...
C 猜數字遊戲的提示(詳解)
實現乙個經典 猜數字 遊戲。給定答案序列和使用者猜的序列,統計有多少數字位置正確 a 有多少數字在兩個序列都出現過但位置不對 b 輸入包含多組資料。每組輸入第一行為序列長度n,第二行是答案序列,接下來是若干猜測序列。猜測序列全0時該組資料結束。n 0時輸入結束。樣例輸入 41 3 5 5 1 1 2...