在一的基础上改进,做两个dp分别是代表arr[0 ~ n-2],arr[1 ~ (n-1)]. import java.util.*; public class Main{

public static int process(int[] arr,int n){
    int[]dp1=new int[n];
    int[]dp2=new int[n];
    dp1[1]=arr[0];
    dp2[1]=arr[1];
    int res=Math.max(arr[0],arr[1]);
    for(int i=2;i<n;i++){
        dp1[i]=Math.max(dp1[i-2]+arr[i-1],dp1[i-1]);
        dp2[i]=Math.max(dp2[i-2]+arr[i],dp2[i-1]);
        res=Math.max(dp1[i],dp2[i]);
    }
    return res;
}


public static void main(String[]args){
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int[]arr=new int[n];
    for(int i=0;i<n;i++)
        arr[i]=sc.nextInt();
    System.out.print(process(arr,n));
}

}