292 Nim Game
来源:互联网 发布:用友软件销售技巧 编辑:程序博客网 时间:2024/06/10 07:16
原题如下:![这里写图片描述](http://img.blog.csdn.net/20151117144013824)
分析:这题有点像小学数学报玩过的一个趣味数学题。首先我们这样来考虑,对于给定的n,如果我想要拿到n必须得拿到n-4(因为每个人只能拿【1,3】个石头),同理可得要想拿到n-4必须得拿到n-8,这其实就是一个递归了。然后我们考虑中止情况,n为1到3的时候肯定是我赢,n为4的时候肯定是对手赢。由此可把n递归到【1,4】内来求解,可得代码如下:
bool canWinNim(int n) { if (n <= 3) return true; if (n == 4) return false; return canWinNim(n-4);}
可是当我提交之后并没有通过,提示Last executed input : 1348820612。造成这个结果只要是因为一方面没有考虑到大整数的情况,int型变量可表示的最大正整数为65535。另一方面是由于递归的o(N)时间复杂度造成的。事实上当n取20000的时候编译器就调用不动了。
于是,通过递归的思路我们可以发现,当n为4的倍数时,必输,其余情况必赢。可得代码如下。
bool canWinNim(int n){ if(n % 4 == 0) return false; return true; }
简洁明了,时间复杂度为o(1)。总结下来就是分析真的很重要,要透过现象看本质,递归用来找思路不错,真的要是写代码的话还是得慎用。
0 0
- Nim Game leetcode 292
- [292]Nim Game
- [LeetCode 292] Nim Game
- leetcode 292---NIM GAME
- leetcode-292-Nim Game
- LeetCode 292----Nim Game
- LeetCode 292 Nim Game
- 292 Nim Game
- 292 Nim Game
- 【LEETCODE】292-Nim Game
- Leetcode #292 Nim Game
- LeetCode 292:Nim Game
- 【LeetCode】292 Nim Game
- LeetCode 292 Nim Game
- Leetcode #292 Nim Game
- [leetcode 292]Nim Game
- 292Nim Game
- Nim Game---292
- 文件操作
- 怎么事项iMindMap中文字格式的修改
- iOS7默认状态栏文字颜色为黑色,项目需要修
- 在linux下开启FTP服务
- Linux 下Oracle 手工create database 脚本和步骤
- 292 Nim Game
- 15 选择正确的线程模型
- @PathVariable和@RequestParam
- 1043. Is It a Binary Search Tree (25)
- ORA-12519: TNS:no appropriate service handler found 解决
- 【SSH项目实战】国税协同平台-24.条件查询分析与实现
- 制作一个类似登录界面的窗体(无最大最小化栏)
- 16 从EventLoop取消注册和重新注册
- iOS 8.0 之后相册授权直接跳转到设置