列舉 hdu1172 猜數字

2021-07-04 02:08:56 字數 1093 閱讀 1552

因為時間給的非常多,然後測試組數又很小,所以是乙個很粗暴的模擬

只要從1000到9999列舉答案,然後再判斷符合答案的個數,看個數的數量差不多就做完了

然後就在於如何判斷有幾個數字同時存在,我的思路是用vis1和vis2分別記錄進行比較的兩個數字中,每個數字出現的次數

那麼如果對於某個數字,vis1[i]和vis2[i]都不等於0,就說明有min(vis1[i],vis2[i])個數字同時存在

還有把,,就是,,突然愛上巨集定義了,,本來剛開始的時候寫了一大堆的for,後來發現用for的寫法,寫起來真輕鬆!

#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef pairpii;

const int mx = 1000 + 5;

const int inf = 0x3f3f3f3f;

#define for(i,x,y) for(int i=x;i<=y;i++)

#define mem(x,y) memset(x,y,sizeof(x))

/***************************************/

int a[mx], b[mx], c[mx];

int vis1[100], vis2[100];

void get(int x, int w)

}bool check(int x, int n)

}for(i, 0, 3) c2 += (a[i] == s[i]);

for(i, 0, 3) vis2[s[i]] = 0;

if(b[id] != c1 || c[id] != c2)

}for(i, 0, 3) vis1[a[i]] = 0;

return true;

}int main()

int cnt = 0, ans;

for(i, 1000, 9999)

}if(cnt == 1) else

}return 0;

}

Hdu 1172 猜數字 列舉

題目傳送門 因為題目限定為4位數,所以讀入所有情況,並從1000列舉到9999,判斷是否有1個數滿足所有條件,如果有即輸出,如果有超過1個或者沒有,就輸出not sure。include include include include include include using namespace ...

HDU 1172 猜數字(列舉)

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

HDU 1172 猜數字(列舉)

傳送門 題目中說全是四位數,最多不超過100次問答,就把每乙個四位數都列舉出來,然後判斷是不是滿足問答的結果,如果滿足就加一,最後如果有多個滿足的結果就是不確定,如果只有乙個滿足的數就輸出。include includeusing namespace std int n,a 20 b 20 c 20...