Max Sum

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int t,temp,n,ans,j,x,z,sum,cc=0;    //sum存放最大数值 x代表下表最小 z代表最大下表 cc 第几个案例 ans 存放一直不小0的和
 8     scanf("%d",&t);
 9     while(t--)
10     {
11         cc++;
12         ans=0;  sum=-10000000;
13         scanf("%d",&n);
14         j=0;   //保存最小的下表
15         for(int i=1;i<=n;i++)
16         {
17             scanf("%d",&temp);  
18             ans=ans+temp;  // 每次都想加 和sum比较  之后两个if一次解释
19             if(ans>sum)   //如ans》sum 则交换
20             {
21                 sum=ans;
22                 x=j+1;
23                 z=i;
24             }
25             if(ans<0)//如ans《0 则 之前的数全部删去。并且把下标保存。
26             {
27                 ans=0;
28                 j=i;
29             }
30         }
31         if(t)
32             printf("Case %d:
%d %d %d

",cc,sum,x,z);
33         else
34             printf("Case %d:
%d %d %d
",cc,sum,x,z);
35         
36     }
37 }
38                 
View Code
原文地址:https://www.cnblogs.com/WDKER/p/5392089.html