2015京东校招-硬币游戏
2014-10-27 11:40
323 查看
采用dp算法,记忆化搜索。
// edit by Colin // 2014-10-27 // 硬币问题,1~N个面值,整数vi~vn,两个人玩游戏,一人一次只能从头或尾部取出一个。 // 假设两人都采用最优策略,求第一个人最后所的最大硬币和 #include <iostream> #define MAXN 100 using 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; }
相关文章推荐
- 京东2015校招笔试编程题
- 网易游戏2015校招技术交流会笔记
- 京东2015校招笔试题
- 2015华为校招机试-取石子游戏
- 2015腾讯校招后台开发类内推电话面试(技术工程事业群TEG内推面试分享)
- 互联网公司校招Java面试题总结及答案——京东
- 京东2015校园招聘技术类笔试题
- 取石子游戏 (斐波那契博弈)---华为2014校招机试第三题
- [BZOJ3924][ZJOI2015]幻想乡战略游戏(动态点分治)
- 4820: [Sdoi2017]硬币游戏
- 2015美团校招部分笔试题
- 51Nod 1381:硬币游戏
- BZOJ3991: [SDOI2015]寻宝游戏
- 2015阿里校招前端在线题目
- 阿里2015校招前端方向的一道面试题
- [BZOJ3924][Zjoi2015]幻想乡战略游戏(动态点分治)
- hdu 3537 Daizhenyang's Coin(博弈-翻硬币游戏)
- bzoj1411: [ZJOI2009]硬币游戏
- hdu3537 Daizhenyang's Coin 翻硬币,(Mock Turtles游戏)
- 京东校招前端笔试题:购物车问题