因為時間給的非常多,然後測試組數又很小,所以是乙個很粗暴的模擬
只要從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...