zoj 2290 Game 博弈论

思路:HDU有过类似的题目,也就是谁面对FIB数,就处于必败状态。

再求第二问的时候要注意不一定要在一步之内就让对手处于必败状态,可以多步进行,

这个过程可以用递归实现。

代码如下:

 

复制代码
 1 #include<iostream>
 2 using namespace std;
 3 int fib[44];
 4 int dfs(int n)
 5 {
 6     int k=0;
 7     while(fib[k]<n) k++;
 8     if(fib[k]==n) return fib[k];
 9     else return dfs(n-fib[k-1]);
10 }
11 int main()
12 {
13     fib[0]=fib[1]=1;
14     for(int i=2;i<44;i++)
15         fib[i]=fib[i-1]+fib[i-2];
16     int n,m;
17     while(cin>>n){
18         int k=0;
19         while(fib[k]<n) k++;
20         if(fib[k]==n) cout<<"lose"<<endl;
21         else cout<<dfs(n-fib[k-1])<<endl;
22     }
23     return 0;
24 }
View Code
复制代码

 

 

 

posted @   _随心所欲_  阅读(159)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
历史上的今天:
2012-09-20 poj 1401 Factorial
点击右上角即可分享
微信分享提示