實現乙個經典"猜數字"遊戲。給定答案序列和使用者猜的序列,統計有多少數字位置正確(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)
題意有點難理解,具體如下
如在game1中,第乙個輸入的資料1 3 5 5是模版,接下來輸入的資料將與之比較,比如1 1 2 3,顯然後者第乙個數的1與前者第乙個數的1數值和位置相同,則a++,而後者的3與前者的3數值相同,位置不同,則b++
解題思路是先計算a,再遍歷1-9的數字,統計每個數字在模版陣列和猜測陣列分別出現了多少次,累和後,取較小的那個數再減去a(所有數值相同的情況減去數值相同位置也相同的情況)得b
#include
using
namespace std;
intmain()
for(
int i=
0; i( b[i]==0
) cnt ++;if
( cnt==n )
break
;//0000的情況,cnt=n,跳出迴圈
for(
int i=
1; i<
10; i++)if
( same_a//選取較小的
b = b + same_a;
else
b = b + same_b;
} 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...
例題3 4 猜數字遊戲的提示
寒假回來自己訓練的第一道題,就給懵住了 題目描述 實現乙個經典 猜數字 遊戲。給定答案序列和使用者猜的序列,統計有多少數字位置正確 a 有多少數字在兩個序列都出現過但位置不對 b 輸入輸入包含多組資料。每組輸入第一行為序列長度n,第二行是答案序列,接下來是若干猜測序列。猜測序列全0時該組資料結束。n...
猜數字遊戲的提示(50頁)
1 include2 using namespace std 3int main 4,b 100 mark 0,c1 0,c2 0 9 for int i 0 i n i 10 cin a i 11while true 12 20if b 0 0 break 21 int sum 0 22 for ...