这题提交只能提交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);
}
}



京公网安备 11010502036488号