2015京东校招-硬币游戏
来源:互联网 发布:shell 编程 书籍 编辑:程序博客网 时间:2024/05/22 12:58
采用dp算法,记忆化搜索。
// edit by Colin// 2014-10-27// 硬币问题,1~N个面值,整数vi~vn,两个人玩游戏,一人一次只能从头或尾部取出一个。// 假设两人都采用最优策略,求第一个人最后所的最大硬币和#include <iostream>#define MAXN 100using namespace std;// 表示i-j的和int sum[MAXN][MAXN];// 表示i-j的,一个人取的最优和int f[MAXN][MAXN];int main(){ int i,j,len; int a[8] = {4,2,45,2,11,22,53,89}; len = 4; // 初始化 memset(f,-1,sizeof(f)); memset(sum,0,sizeof(sum)); for(i=0;i<len;++i){ f[i][i] = a[i]; sum[i][i] = a[i]; for(j=i+1;j<len;++j){ sum[i][j] = sum[i][j-1] + a[j]; } } for(i=0;i<len;++i){ for(j=0;j<len;++j) cout<<sum[i][j]<<" "; cout<<endl; } // dp算法 int deta; for(deta = 1;deta< len;++deta){ for(i=0;i<len;++i) { j = i + deta; if(j >= len) break; int num1 = sum[i][j] - f[i][j-1]; int num2 = sum[i][j] - f[i+1][j]; f[i][j] = num1>num2?num1:num2; if(i == 0 && j == len-1) cout<<num1<<" "<<num2<<endl; } } cout<<f[0][len-1]<<endl; return 0;}
0 0
- 2015京东校招-硬币游戏
- 硬币游戏
- 硬币游戏
- 硬币游戏
- 抛硬币游戏模拟
- 1349 翻硬币游戏
- 猜硬币游戏设计
- 博弈-翻硬币游戏
- 博弈-翻硬币游戏
- 博弈-翻硬币游戏
- 博弈-翻硬币游戏
- 翻硬币游戏
- bzoj1411: [ZJOI2009]硬币游戏
- bzoj1411 硬币游戏 分治
- 51nod1381 硬币游戏
- [bzoj4600][SDOI2016]硬币游戏
- 1381硬币游戏
- 【BZOJ4600】硬币游戏,博弈
- JavaScript是你应当学习的下一个(或第一个)编程语言
- mini2440启动
- kettle转换中使用javascript例子整理(2)
- 第9周项目6-穷举法解决几何问题(1)
- tomcat7 运行在windows环境下乱码问题的解决
- 2015京东校招-硬币游戏
- Java系列笔记1--Java 内存区域和GC机制
- 【jquery】删除节点 添加节点 找兄弟节点
- iOS开发 - XCode Debugger中的Icon符号的意义
- hdu 4438 Hunters(数学期望)
- 课后作业
- R+树,多维动态对象的索引机制
- Servlet.service() for servlet jsp threw exception java.lang.NullPointerException
- 常用算法之贪心