1003這道題是一道動態規劃,如果你不太明白動態規劃是什麼,你可以看一下這個鏈接http://blog.csdn.net/woshioosm/article/details/7438834
這道題仔細思考一下的話是這樣的:
1.假設我們從數組第一個下標位開始a[0],如果a[0]是一個正數,那麼就讓maxnum=a[0];然後呢記下這時的開始位置start = i+1;然後我們去找a[1],如果sum=a[1]+a[0]比a[0]大,那麼我們就讓maxnum = a[1]+a[0];但如果a[1]+a[0]
import java.util.*;
public class Main {
public static void main(String[] args) {
int t;
Scanner in = new Scanner(System.in);
t = in.nextInt();
int j=0;
while(in.hasNext())
{
j++;
int n ;
int sum=0,start=0,end=0,tmp=1,maxnum=-1001;
n = in.nextInt();
for(int i=1;i<n+1;i++)
{
sum = sum+in.nextInt();
if(sum>maxnum)
{
maxnum = sum;
start = tmp;
end = i;
}
if(sum<0)
{
sum = 0;
tmp = i+1;
}
}
System.out.printf("Case %d:%n%d %d %d%n",j,maxnum,start,end);
if(t>0) System.out.println();
}
}
}