题目:
方法一:
//先发策略
public static int f(int[] arr,int i,int j){
if(i == j){
return arr[i];
}
return Math.max(arr[i]+s(arr,i+1,j), arr[i]+s(arr,i,j-1));
}
//后发策略
private static int s(int[] arr, int i, int j) {
if(i == j){
return 0;
}
return Math.min(f(arr,i+1,j), f(arr,i,j-1));
}
public static void main(String[] args) {
int arr[] = {5,6,7,2,1,3,2,4,5,6};
int max = Math.max(f(arr,0,arr.length-1), s(arr,0,arr.length-1));
System.out.println(max);
}
方法二: