码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2516 取石子游戏(简单博弈)(斐波那契博弈)

时间:2017-10-09 22:35:36      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:init   ret   span   main   long   ons   bre   space   ==   

题目链接: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 取石子游戏(简单博弈)(斐波那契博弈)

标签:init   ret   span   main   long   ons   bre   space   ==   

原文地址:http://www.cnblogs.com/Leonard-/p/7642959.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!