例題3 4 猜數字遊戲的提示

2021-09-10 12:54:26 字數 1318 閱讀 2739

寒假回來自己訓練的第一道題,就給懵住了╮(╯▽╰)╭

題目描述

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