您的位置:首页 > 其它

HDU 2516 取石子游戏

2012-04-18 16:05 260 查看
这是一道Fibonacci’s Game (斐波那契博弈)

斐波那契博弈模型,是ACM题中常见的组合游戏中的一种,大致上是这样的:
有一堆个数为 n 的石子,游戏双方轮流取石子,满足:
1. 先手不能在第一次把所有的石子取完;
2. 之后每次可以取的石子数介于 1 到对手刚取的石子数的 2 倍之间(包含 1 和对手刚取的石子数的 2 倍)。
约定取走最后一个石子的人为赢家,求必败态。

View Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<vector>
using namespace std;

int main(  )
{
const int t = 0x7fffffff ;
int f[50] ={ 1 ,1 },i,n;
for( i = 2; i < 47 ; i ++)
{
f[i] = f[i-1] + f[i-2];//printf( "%d %d\n",f[i] ,t );
//        if( f[i] < 0  ) break;

}
while( scanf( "%d" ,&n ),n )
{
for(  i = 1 ; i < 47; i++  )
{
if( f[i]==n ) break;
}
if( i != 47 ) puts("Second win");
else puts( "First win" );
}
//   system( "pause" );
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: