纸牌博弈
来源:互联网 发布:mysql 时间 减 编辑:程序博客网 时间:2024/04/27 16:58
题目描述:
有一个整型数组A,代表数值不同的纸牌排成一条线。玩家a和玩家b依次拿走每张纸牌,规定玩家a先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家a和玩家b都绝顶聪明,他们总会采用最优策略。请返回最后获胜者的分数。
给定纸牌序列A及序列的大小n,请返回最后分数较高者得分数(相同则返回任意一个分数)。保证A中的元素均小于等于1000。且A的大小小于等于300。
测试样例:
[1,2,100,4],4
返回:101
AC代码:
class Cards {public: int max(int a,int b){ return a>b?a:b; } int min(int a,int b){ return a<b?a:b; } int cardGame(vector<int> A, int n) { // write code here if(A.empty()||n<=0) return 0; int f[n][n],s[n][n];//f[i][j]代表从i到j先选时获得最大值,s[i][j]代表从i到j后选时获得最大值 memset(f,0,sizeof(f)); memset(s,0,sizeof(s)); for(int j=0;j<n;j++){ f[j][j]=A[j]; for(int i=j-1;i>=0;i--){ f[i][j]=max(A[i]+s[i+1][j],A[j]+s[i][j-1]); s[i][j]=min(f[i+1][j],f[i][j-1]); } } return max(f[0][n-1],s[0][n-1]); }};
0 0
- 纸牌博弈
- 纸牌博弈
- 纸牌博弈
- 纸牌博弈问题
- [编程题]纸牌博弈
- 纸牌博弈(DP)
- 纸牌博弈问题
- 纸牌博弈问题
- 纸牌博弈问题
- 纸牌博弈问题
- 纸牌博弈问题
- 纸牌博弈(动态规划java)
- 纸牌博弈问题 动态规划
- 排成一条线的纸牌博弈问题
- 排成一条线的纸牌博弈问题
- 排成一条线的纸牌博弈问题
- 动态规划-排成一条线的纸牌博弈等问题
- 动态规划-排成一条线的纸牌博弈问题
- 第十一周补充项目3-点派生直线类
- Nim游戏(一堆/N堆)-博弈
- linux常用命令
- 利用HttpClient or HttpURLConnection 借助tomcat实现在本地进行网络数据的访问
- Leetcode 20. Valid Parentheses
- 纸牌博弈
- Code First Migrations更新数据库结构的具体步骤
- android handler 弱引用
- STM32寄存器方式流水灯
- Java入门第一季-学习笔记
- Hibernate复合主键的注解
- Unity-手机游戏开发全屏实现
- [BZOJ1717][Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组)
- POJ 3216 Repairing Company 最少路径覆盖+floyd最短路