其他分享
首页 > 其他分享> > 纸牌问题

纸牌问题

作者:互联网

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