HDU 1172 猜數字 暴力列舉

2021-09-10 15:06:36 字數 1784 閱讀 3465

problem description

猜數字遊戲是gameboy最喜歡的遊戲之一。遊戲的規則是這樣的:計算機隨機產生乙個四位數,然後玩家猜這個四位數是什麼。每猜乙個數,計算機都會告訴玩家猜對幾個數字,其中有幾個數字在正確的位置上。

比如計算機隨機產生的數字為1122。如果玩家猜1234,因為1,2這兩個數字同時存在於這兩個數中,而且1在這兩個數中的位置是相同的,所以計算機會告訴玩家猜對了2個數字,其中乙個在正確的位置。如果玩家猜1111,那麼計算機會告訴他猜對2個數字,有2個在正確的位置。

現在給你一段gameboy與計算機的對話過程,你的任務是根據這段對話確定這個四位數是什麼。

input

輸入資料有多組。每組的第一行為乙個正整數n(1<=n<=100),表示在這段對話中共有n次問答。在接下來的n行中,每行三個整數a,b,c。gameboy猜這個四位數為a,然後計算機回答猜對了b個數字,其中c個在正確的位置上。當n=0時,輸入資料結束。

output

每組輸入資料對應一行輸出。如果根據這段對話能確定這個四位數,則輸出這個四位數,若不能,則輸出"not sure"。

sample input

64815 2 1

5716 1 0

7842 1 0

4901 0 0

8585 3 3

8555 3 2

24815 0 0

2999 3 3

0sample output

3585

not sure

這題一看,給定的都是四位數,用暴力直接迴圈搜很划算。

我的思路:對於每組測試樣例,列舉1000—9999的所有四位數,然後再對每個四位數進行驗證(通過panduan函式驗證),看是否滿足測試樣例所給的所有條件。如果不能唯一確定(乙個都沒有或者多於乙個)那就輸出not sure

寫完執行感覺沒問題提交一遍過了就算了,**格式啥的沒太注意

#include

#include

using namespace std;

const

int maxn =

105;

int n;

int a[maxn]

;int b[maxn]

;int c[maxn]

;int ax[5]

;int ay[5]

;int tag[5]

;bool panduan

(int x,

int j)}}

int cnt2 =

(ax[1]

== ay[1]

)+(ax[2]

== ay[2]

)+(ax[3]

== ay[3]

)+(ax[4]

== ay[4]

);if(cnt2 != c[j]

)return false;

if(cnt1 != b[j]

)return false;

return true;

}intf(

)}if(flag == true)

else

flag = true;

}return ans;

}int

main()

int res =f(

);if(res !=0)

cout << res << endl;

else

cout <<

"not sure"

<< endl;

}return0;

}

15ms, 還挺快的

HDU 1172 猜數字 暴力列舉

problem description 猜數字遊戲是gameboy最喜歡的遊戲之一。遊戲的規則是這樣的 計算機隨機產生乙個四位數,然後玩家猜這個四位數是什麼。每猜乙個數,計算機都會告訴玩家猜對幾個數字,其中有幾個數字在正確的位置上。比如計算機隨機產生的數字為1122。如果玩家猜1234,因為1,2這...

暴力 猜數字(hdu1172)

題目描述 猜數字遊戲是gameboy最喜歡的遊戲之一。遊戲的規則是這樣的 計算機隨機產生乙個四位數,然後玩家猜這個四位數是什麼。每猜乙個數,計算機都會告訴玩家猜對幾個數字,其中有幾個數字在正確的位置上。比如計算機隨機產生的數字為1122。如果玩家猜1234,因為1,2這兩個數字同時存在於這兩個數中,...

列舉 hdu1172 猜數字

因為時間給的非常多,然後測試組數又很小,所以是乙個很粗暴的模擬 只要從1000到9999列舉答案,然後再判斷符合答案的個數,看個數的數量差不多就做完了 然後就在於如何判斷有幾個數字同時存在,我的思路是用vis1和vis2分別記錄進行比較的兩個數字中,每個數字出現的次數 那麼如果對於某個數字,vis1...