纸牌问题
作者:互联网
public class PaperQuestion { public static void main(String[] args) { int[] arr={1,2,100,4}; System.out.println(f(arr,0,3)); System.out.println(s(arr,0,3)); } public static int f(int[] arr,int l,int r){ //只有一张牌 if(l==r){ return arr[l]; } //拿左边的一张,那在l+1,r上变成了后手 int s1= arr[l]+s(arr,l+1,r); //拿右边的一张,那在l,r-1 int s2= arr[r]+s(arr,l,r-1); return Math.max(s1,s2); //return Math.max(arr[l]+s(arr,l+1,r),arr[r]+s(arr,l,r-1)); } public static int s(int[] arr,int l,int r){ //只有一张牌 if(l==r){ return 0; } //先手拿了l,在L+1,r上变成了新手 int p1=f(arr,l+1,r); //先手拿了r ,在l,r-1上变成了新手 int p2=f(arr,l,r-1); //被动拿最小的 return Math.min(p1,p2); // return Math.min(f(arr,l+1,r),f(arr,l,r-1)); } }
标签:arr,return,纸牌,int,问题,static,public,Math 来源: https://www.cnblogs.com/iwyc/p/15229828.html