纸牌博弈先手最优问题

阅读: 评论:0

纸牌博弈先手最优问题

纸牌博弈先手最优问题

问题描述:

一个纸牌明牌显示,牌上的数值就是分数:(就是一个数组,每个数均为非负整数),设置一个数为M,每个人都是绝顶聪明,都是按最优策略顺序拿牌,

一次可拿的牌数是大于等于1,小于等于M,问先手拿牌的人最多可以得几分。

答:这题使用贪心法绝对是不行的。

比如 1,1,1,100,设置M=2

那么第一个人绝对不能第一次拿两张牌,否则第二个人就可以拿到100.

这涉及到两个人博弈问题,但是博弈策略是一样的,所以可以使用同一个函数表示博弈策略

代码如下:
 

package DynamicAndRecursive;public class FirstMax {/*** * @param arr 纸牌数组* @param index 纸牌的有效首地址,也就是第一个人只能从index下标开始取* @param m 一次最多几张牌* @return 第一个人最多得分*/public static int firstMax(int[] arr, int index,int m){if(arr == null || arr.length == 0 || (index < 0) || index >= arr.length ){return 0;}int len = arr.length - index;//计算出数组剩余长度是否大于mint value = 0;if(len <= m){//如果数组长度小于m,那就全部拿过来,都是正数

本文发布于:2024-02-04 02:46:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170698627052073.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:先手   纸牌   最优
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23