遇到的问题:
1、每组测试数据之前要清零
2、引入z暂时存放开始位置,起止位置必须同时记录
3、3层循环时超限,因此只能用两层循环
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1003/
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a[];
int m,n,p=1;
int sum,subsum;
m= cin.nextInt();//循环次数
while(cin.hasNext()){
int x=1,y=1,z=1;
boolean b=true;
n= cin.nextInt();//数组长度
a=new int[n];
for(int i=0;i<a.length;i++){//输入数组
a[i]=cin.nextInt();
}
sum=a[0];
subsum=0;
for(int i=0;i<a.length;i++){//判断负数
if(a[i]>0){
b=false;
break;
}
}
if(b==true){//全为负数
for(int i=0;i<a.length;i++){
if(a[i]>sum){
sum=a[i];
x=i+1;
y=i+1;
}
}
}
else{
for(int i=0;i<a.length;i++){//至少有一个正数
subsum+=a[i];
if(subsum<0){
subsum=0;
z=i+2;
}
if(subsum>sum){
sum=subsum;
y=i+1;
x=z;
}
}
}
System.out.println("Case"+" "+p+":");
System.out.println(sum+" "+x+" "+y);
if(p<m){
System.out.println();
}
if(p==m){
break;
}
p++;
}
}
}