博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode Coins in a Line
阅读量:4515 次
发布时间:2019-06-08

本文共 1478 字,大约阅读时间需要 4 分钟。

原题链接在这里:

题目:

There are n coins in a line. Two players take turns to take one or two coins from right side until there are no more coins left. The player who take the last coin wins.

Could you please decide the first play will win or lose?

Example

n = 1, return true.

n = 2, return true.

n = 3, return false.

n = 4, return true.

n = 5, return true.

题解:

类似. 这道题其实是DP, 后面还有进阶题.

状态 还剩i个coin时先手的人是赢是输.

转移方程 dp[i] = (dp[i-2] && dp[i-3]) || (dp[i-3] && dp[i-4]).

初始化 dp[0] = false, dp[1] = true, dp[2] = true, dp[3] = false.

答案dp[n].

Time Complexity: O(n), 因为中间用了dp来记录中间值. Space: O(n), stack space.

AC Java:

1 public class Solution { 2     public boolean firstWillWin(int n) { 3         int [] dp = new int[n+1]; 4         return memorySearch(n, dp); 5     } 6      7     private boolean memorySearch(int n, int [] dp){ 8         if(dp[n] != 0){ 9             return dp[n] == 2;10         }11         12         if(n<=0 || n == 3){13             dp[n] = 1;14         }else if(n == 1 || n == 2){15             dp[n] = 2;16         }else{17             if((memorySearch(n-2, dp) && memorySearch(n-3, dp)) 18                 || (memorySearch(n-3, dp) && memorySearch(n-4, dp))){19                     dp[n] = 2;20                 }else{21                     dp[n] = 1;22                 }23         }24 25         if(dp[n] == 2){26             return true;27         }else{28             return false;29         }30     }31 }

 跟上.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/6406922.html

你可能感兴趣的文章
ovs ovn 学习资料
查看>>
C# string 转 bool
查看>>
iOS视频边下载边播放
查看>>
数据分列将数字转换成文本格式
查看>>
java基础语法
查看>>
把e.printStackTrace的堆栈信息打印在log.error()中
查看>>
Highsoft.Highcharts 5.0.6439.38401 key
查看>>
Kids and Prizes(SGU 495)
查看>>
如何完成dedecms外部数据库调用|跨数据库数据调用
查看>>
二维码扫描ZXing简化
查看>>
Linux Bootloader_转载
查看>>
Bootstrap 3.0正式版发布!
查看>>
spring boot--拦截器实现
查看>>
我的CSS样式记事本(1)
查看>>
事务和异常易出现的错误
查看>>
tesseract-ocr
查看>>
采用Mono进行移动开发图书推荐
查看>>
python---图表的使用
查看>>
性能测试培训: 监控CPU之python
查看>>
ComBox、listBox、checklistBox控件
查看>>