HDU 2516 取石子游戏(简单博弈)(斐波那契博弈)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2516 取石子游戏(简单博弈)(斐波那契博弈)相关的知识,希望对你有一定的参考价值。
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2516
题意:有一堆石子,两人轮流取石子,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。
题解:斐波那契博弈裸题
1 #include <cmath> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 6 const int N=55; 7 typedef long long LL; 8 const int INF=0x3f3f3f3f; 9 int fib[N]; 10 11 void Init(){ 12 fib[0]=fib[1]=1; 13 for(int i=2;i<N;i++) 14 fib[i]=fib[i-1]+fib[i-2]; 15 } 16 17 int main(){ 18 int n; 19 Init(); 20 while(cin>>n&&n){ 21 int flag=0; 22 for(int i=2;i<N;i++){ 23 if(n==fib[i]) {flag=1;break;} 24 } 25 if(flag) cout<<"Second win"<<endl; 26 else cout<<"First win"<<endl; 27 } 28 return 0; 29 }
以上是关于HDU 2516 取石子游戏(简单博弈)(斐波那契博弈)的主要内容,如果未能解决你的问题,请参考以下文章