poj 1067 取石子游戏

原创 2016年05月30日 20:02:58

题目:
poj

题意:

中文题哦~O(∩_∩)O

分析:
经典又有趣的博弈问题。。

发现博弈最有意思的是这群人永远都知道 最佳游戏策略 【我怎么就不知道呢】

说正事:
这是一个博弈算法,名为威佐夫博弈。

问题:首先有两堆石子,博弈双方每次可以取一堆石子中的任意个,不能不取,或者取两堆石子中的相同个。先取完者赢。

思路:既然要先手赢,那么我们就分析一下 必败局势。
很好看出来:
(0,0),(1,2),(3,5),(4,7),(6,10),(8,13)…..
找规律可发现,所有的自然数都出现且只会出现一次。而两个数的差是递增的。而 第一个数的值=差值*1.618 即(sqrt(5)+1)/2;
所以就很好说了:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
//by mars_ch
using namespace std;
int n,m;
int temp; 
int main()
{
    while(scanf("%d%d",&n,&m) != EOF)
    {
        if(n>m) swap(m,n);   //这个要加,宝宝没加。。。
        int k=m-n;
        //printf("%d\n",k);
        temp=floor(k*(sqrt(5.0)+1.0)/2.0);     //这个是.0  因为精度问题   还要强制转化或者向下取整一下
        //printf("%d\n",temp);
        if(temp == n) printf("0\n");
        else printf("1\n");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ-1067 取石子游戏

POJ-1067 取石子游戏/*黄金分割比例判断是不是非奇异局势,面对奇异局势必败 两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜 反之,则后拿者取胜。 */ //公式 ak =[k(1+...
  • u010893129
  • u010893129
  • 2014年03月10日 23:00
  • 1185

POJ-1067-取石子游戏

其实就是威佐毒博弈(Wythoff Game),具体可以百度一下《关于博弈论基础知识的一些总结》,上面有提到这个博弈所得到的2个结论 即假设必败点必然(a,b) 则有 a=floor(i*(1+5^...
  • z309241990
  • z309241990
  • 2013年08月07日 15:13
  • 704

POJ-1067 取石子游戏(威佐夫博弈)

直接是:威佐夫博弈。 这个过于繁琐,只能运用现成的结论。 设奇异局势(必败局势)为(a[i],b[i]),则有a[0]=b[0]=0;a[k]=前面未出现的最小自然数,b[k]=a[k]+k 具...
  • idealism_xxm
  • idealism_xxm
  • 2016年07月20日 16:31
  • 581

POJ 取石子游戏

取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35918   Accepte...
  • u014492513
  • u014492513
  • 2015年03月25日 15:01
  • 614

Pku 1067 取石子游戏

Pku 1067 取石子游戏 博弈
  • GreenAppple
  • GreenAppple
  • 2011年03月27日 10:13
  • 859

POJ 1067 取石子游戏

取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25862   Accepte...
  • Tdreamge
  • Tdreamge
  • 2012年01月08日 10:49
  • 344

poj 1067 取石子游戏(博弈)

【题目大意】:有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部...
  • new_wu
  • new_wu
  • 2012年03月19日 20:46
  • 411

Poj 1067 取石子游戏

Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最...
  • acmmiao
  • acmmiao
  • 2016年07月01日 22:45
  • 111

POJ 1067 取石子游戏 中文

2 1 玩家1输 n 1 玩家1赢 n 2 玩家1赢 n>=2 n n 玩家1赢 n 0 玩家1赢 n n-1 玩家1赢 5 3 玩家1输 n 3 玩家1赢 n>5 6 4 玩家1赢 7 4 玩家1输...
  • woniupengpeng
  • woniupengpeng
  • 2017年01月30日 13:03
  • 78

POJ 1067 取石子游戏 威佐夫博弈

题目链接:见这里 解法:威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。如果甲面对(0,0)...
  • just_sort
  • just_sort
  • 2017年03月02日 13:21
  • 99
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1067 取石子游戏
举报原因:
原因补充:

(最多只允许输入30个字)