这题提交只能提交C++版本,不知道是什么情况,我使用Java写的

这题其实就是求前缀和

因为是每隔至少两个的求和,所以我使用了双指针,当i>=j&&s[i]>0就累加

为什么要s[i]>0?因为想要求最大值,最好就是每一次都拿正的相加,如果拿负的,值反而会变小

package nowconder_BGN;

import java.util.Scanner;

public class 卡牌游戏59 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int a[]=new int[n];
		int s[]=new int[n+1];
		long max=0;
		for (int i = 1; i <= n ; i++) {
			s[i]=s[i-1]+scanner.nextInt();
			
		}
		for (int i = 1,j=i+1; i < s.length; i++) {
			if(i>=j&&s[i]>0) {
				max+=s[i];
				j=i+1;
			}
		}
		
		
		
		System.out.println(max);
		

	}

}