486. 预测赢家
作者:互联网
这题拿到首先想到的是贪心算法,也联想到华工ACM那道管子题,想每次都拿最大的,但是好像不行,有些情况明显不适用,比如{1,5,233,7}这个测试用例, 对于这种情况,若贪心算,则会先拿7,但是拿7的话,233就会被后手拿了。所以并不可行。
emmm。然后想到了递归
每个玩家都要自己成绩最好 所以不能当方面考虑一方
https://www.bilibili.com/video/av31317000?from=search&seid=5864670697835878797
//选取评价函数为先手得分-后手得分,博弈树有重叠的部分可以重复利用。
class Solution {
public boolean PredictTheWinner(int[] nums) {
return getSorce(0, nums.length-1, nums) >= 0;
}
public int getSorce(int x, int y, int nums[]) {
if (x == y)
return nums[x];
else {
return Math.max(nums[x] - getSorce(x + 1, y, nums), nums[y] - getSorce(x, y - 1, nums));
}
}
}
递归有相同子问题一般可以转化为动态规划
标签:getSorce,return,预测,nums,int,赢家,486,public,233 来源: https://www.cnblogs.com/cznczai/p/11284216.html