硬币排成线 II
来源:互联网 发布:windows反潜驱逐战 编辑:程序博客网 时间:2024/05/16 05:56
有 n
个不同价值的硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。计算两个人分别拿到的硬币总价值,价值高的人获胜。
请判定 第一个玩家 是输还是赢?
样例
给定数组 A = [1,2,2]
, 返回 true
.
给定数组 A = [1,2,4]
, 返回 false
.
class Solution {public: /** * @param values: a vector of integers * @return: a boolean which equals to true if the first player will win */ bool firstWillWin(vector<int> &values) { // write your code here int n = values.size(); if (n < 3) { return true; } int buf[n+1]; buf[n] = 0; buf[n-1] = values[n-1]; buf[n-2] = values[n-2] + values[n-1]; buf[n-3] = values[n-3] + values[n-2]; int sum = values[n-3] + values[n-2] + values[n-1]; for (int i = n-4; i >= 0; i--) { int a = values[i] + min(buf[i+2], buf[i+3]); int b = values[i] + values[i+1] + min(buf[i+3], buf[i+4]); buf[i] = max(a, b); sum += values[i]; } return buf[0] > sum-buf[0]; }};
0 0
- 硬币排成线 II
- 硬币排成线 II
- LintCode-硬币排成线 II
- LintCode :硬币排成线 II
- [LintCode]硬币排成线 II
- LintCode 硬币排成线 II
- 硬币排成线 II-LintCode
- 硬币排成线I和硬币排成线II问题
- 解题报告:硬币排成线 II
- 解题报告:硬币排成线 II
- LintCode:M-硬币排成线 II
- lintcode coins-in-a-line-ii 硬币排成线ii
- lintcode Coins in Line II 硬币排成线 II
- LintCode-硬币排成线
- 硬币排成线
- 硬币排成线 III
- LintCode : 硬币排成线
- LintCode_394_硬币排成线
- 51nod 1212 无向图最小生成树
- 使用layout方法实现控件的移动并且不影响点击事件
- 51nod 1181 质数中的质数(质数筛法)
- 51nod 1135 原根
- MySQL在Windows平台下忘记root密码的解决办法
- 硬币排成线 II
- C# SQLite 数据库开发(1)------数据库的下载、配置和操作
- Codeforces Round #320 (Div. 2) 579A. Raising Bacteria
- environment variables
- win7下搭建nfs-server的方法
- iOS开发优化tableView滑动流畅性的集中常用方法
- zoj2616 最小割
- Codeforces Round #321 (Div. 2) 580A. Kefa and First Steps
- 图片摆置.HTML