您的位置:首页 > 其它

博弈-威佐夫博弈

2018-04-03 20:45 148 查看
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光着得胜。
奇异局势的性质:
1.任何自然数都包含在一个且仅有一个奇异局势中;
2.任何操作都可以将奇异局势变为非奇异局势;
3.采用适当的方法,可以将非奇异局势变为奇异局势。
所以面对非奇异局势,先手必胜,否则先手必败。#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
int a,b,t;
cin>>a>>b;
double x=(1+sqrt(5.0))/2.0;
if(a>b)
swap(a,b);
t=(int)((b-a)*x);
if(t==a)
cout<<"先手必败"<<endl;
else
cout<<"先手必胜"<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: