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

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

LintCode Coins in a line III

There are n coins in a line. Two players take turns to take a coin from one of the ends of the line until there are no more coins left. The player with the larger amount of money wins.

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

Example

Given array A = [3,2,2], return true.
Given array A = [1,2,4], return true.
Given array A = [1,20,4], return false.

Recursion + Memorization

复杂度

O(N^2), O(N^2)

思路

参考coins II的思路,对于dpi,表示在从i到j的范围内,先手玩家能拿到的最大的硬币价值。
对于状态dpi,先手玩家有两种选择, 要么拿num[i]的硬币,要么拿num[j]的硬币(左边一个的或者右边一侧的),
如果拿左侧的硬币,dpi = num[i] + sumi + 1 - dpi + 1
如果拿右侧的硬币,dpi = num[j] + sumi - dpi
取两个值的最大值。

也可以用dp写。

for(int k = 2; k < len; k ++) {    for(int i = 0; i < len - k; i ++) {        int right = i + k;        dp[i][right] = Math.max();    }}

代码

int len;Map
map = new HashMap<>();public boolean coins(int[] num) { len = num.length; int[] sum = new int[len]; for(int i = 0; i < len; i ++) { if(i == 0) sum[i] = num[i]; else sum[i] = num[i] + sum[i - 1]; } return helper(num, 0, len - 1, sum) * 2 > sum[len - 1];}public int helper(int[] num, int left, int right, int[] sum) { // base case; if(left > right) return 0; if(left == right) return num[left]; if(map.containsKey(left * len + right)) return map.get(left * left + right); // int val = Math.max(num[left] + getSum(left + 1, right, sum) - helper(num, left + 1, right, sum), num[right] + getSum(left, right - 1, sum) - helper(num, left, right - 1, sum)); map.put(left * len + right, val); return val;}

转载地址:http://cftil.baihongyu.com/

你可能感兴趣的文章
Tip:部署sharepoint2013SP1指定SQL数据库时的小细节
查看>>
java设计模式演示样例
查看>>
MemCache分布式缓存的一个bug
查看>>
R语言屏幕输出
查看>>
创建与删除索引
查看>>
jQuery .tmpl() 用法
查看>>
HTML5新增核心工具——canvas
查看>>
myeclipse6.0下载及注冊码
查看>>
八大排序算法总结
查看>>
JBoss Jopr
查看>>
Android获取文件夹路径 /data/data/
查看>>
Robot Framework自动化测试(一)---第一个脚本
查看>>
菜鸟学SSH(十六)——Struts2内部是如何工作的
查看>>
去标签获取网页内容
查看>>
改动file header (測)
查看>>
微软职位内部推荐-Senior Speech TTS
查看>>
假如是你,你会怎么选择
查看>>
UVA - 10574 Counting Rectangles
查看>>
eclipse luna使用jdk1.8初始化
查看>>
6-11-N皇后问题-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>