POJ1067 取石子游戲(威佐夫博弈)
阿新 • • 發佈:2019-01-06
題意:
中文題不解釋。
要點:
第一道博弈論題啊,這種題做過了就很好做了,程式碼很好寫。這題是威佐夫博弈判斷先手輸贏,看了一下還是很簡單的,就是記住第一個值是差值的1.618倍,注意第一個值要比第二個值小。
15423535 | 1067 | Accepted | 176K | 16MS | C++ | 354B | 2016-04-22 14:45:30 |
#include<cstdio> #include<algorithm> #include<cmath> using namespace std; const double q = (1 + sqrt(5.0)) / 2.0; int Wythoff(int a, int b) { if (a > b) swap(a, b); if (a == (int)((b - a)*q)) return 0; //先手必敗,我是先手所以返回0 return 1; } int main() { int a, b; while (scanf("%d%d", &a, &b) != EOF) { printf("%d\n", Wythoff(a, b)); } return 0; }