C 猜數字遊戲的提示(詳解)

2021-10-12 03:06:34 字數 1260 閱讀 7478

實現乙個經典"猜數字"遊戲。給定答案序列和使用者猜的序列,統計有多少數字位置正確(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 ...