排成一条线的纸牌博弈问题

这是一个关于两个绝顶聪明的玩家A和B玩纸牌的游戏。他们依次从一排数值不同的纸牌中拿走最左边或最右边的纸牌。玩家A先手,目标是最大化自己的得分。通过分析示例,可以看出玩家A会首先选择能确保后续能拿到更高分的纸牌。例如,在数组[1,2,100,4]中,玩家A会选择1,确保能拿到100,最终获胜,得分为101。而在数组[1,100,2]中,无论玩家A如何选择,玩家B都能拿到100并获胜,得分为100。" 132220201,19673928,PyQt5官方文档下载与使用指南,"['PyQt5', 'Python', 'GUI编程', 'Qt框架']
摘要由CSDN通过智能技术生成

排成一条线的纸牌博弈问题
【题目】
给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。
【举例】
arr=[1,2,100,4]。开始时玩家A只能拿走1或4。如果玩家A拿走1,则排列变为[2,100,4],接下来玩家B可以拿走2或4,然后继续轮到玩家A。如果开始时玩家A拿走4,则排列变为[1,2,100],接下来玩家B可以拿走1或100,然后继续轮到玩家A。玩家A作为绝顶聪明的人不会先拿4,因为拿4之后,玩家B将拿走100。所以玩家A会先拿1,让排
列变为[2,100,4],接下来玩家B不管怎么选,100都会被玩家A拿走。玩家A会获胜,分数为101。所以返回101。
arr=[1,100,2]。开始时玩家A不管拿1还是2,玩家B作为绝顶聪明的人,都会把100拿走。玩家B会获胜,分数为100。所以返回100。

public class CardsInLine {
   
	// 暴力递归
	public int win1(int[] arr) {
   
		if (arr.length == 0 || arr == null) {
   
			return 0;
		}
		return Math.max(f(arr, 0, arr.length - 1), s(arr, 0, arr.length - 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值