威佐夫博弈
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>
#include <stdlib.h>
#include <stdio.h>
#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) x<<1
#define r(x) x<<1|1
#define ms(a,b) memset(a,b,sizeof(a))
using namespace std;
int main() {
int n, m;
int temp;
while (cin >> n >> m) {
temp = (int)(((sqrt(5) + 1) / 2)*((double)(abs(n - m))));
if (temp == min(n, m)) printf("0\n");
else printf("1\n");
}
}
本文深入探讨了威佐夫博弈这一经典的博弈论问题,详细介绍了如何使用数学算法快速判断博弈双方的胜负策略。通过分析两个堆中石子数量的差异,结合黄金分割比例,巧妙地解决了游戏的最优解问题。
1万+

被折叠的 条评论
为什么被折叠?



