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 input6
4815 2 1
5716 1 0
7842 1 0
4901 0 0
8585 3 3
8555 3 2
24815 0 0
2999 3 3
0
sample output3585
not sure
思路:就是把1000到9999都搜一遍,如果標記變數為1就是唯一解,否則不是not sure;
ac**:
#include
#include
#include
using namespace std;
int n;
struct point ;
point tt[105];
int f[4];
int tag;
int ok;
void dfs(int x)
f[0]=x%10;
f[1]=x/10%10;
f[2]=x/100%10;
f[3]=x/1000;
int hj;
for(int i=0;i}if(bb!=tt[i].tol)
for(int j = 0;j < 4;j++)}}
if(aa!=tt[i].sum)
}if(hj)
else
}int main()
tag=0;
dfs(1000);
if(tag!=1)
else
}return 0;
}思路比較好的是,都搜一遍然後看標記變數。都是同學教的,自己好渣啊。。。。。。。。。。。。
HDU 1172 猜數字 廣搜
這題要換個思維,不要想著如何通過已有的條件來得到正確的值,而是列舉0000 9999這10000個數,看滿足條件的數字有多少個,只有剛好有乙個的數滿足的情況下才輸出。如下 include include include include include define min x,y x y x y u...
列舉 hdu1172 猜數字
因為時間給的非常多,然後測試組數又很小,所以是乙個很粗暴的模擬 只要從1000到9999列舉答案,然後再判斷符合答案的個數,看個數的數量差不多就做完了 然後就在於如何判斷有幾個數字同時存在,我的思路是用vis1和vis2分別記錄進行比較的兩個數字中,每個數字出現的次數 那麼如果對於某個數字,vis1...
暴力 猜數字(hdu1172)
題目描述 猜數字遊戲是gameboy最喜歡的遊戲之一。遊戲的規則是這樣的 計算機隨機產生乙個四位數,然後玩家猜這個四位數是什麼。每猜乙個數,計算機都會告訴玩家猜對幾個數字,其中有幾個數字在正確的位置上。比如計算機隨機產生的數字為1122。如果玩家猜1234,因為1,2這兩個數字同時存在於這兩個數中,...