HDU 1003

本来不想写的

以前写过一次没过

现在每次打开HDU都会显示没完成

看着不爽

直接暴力肯定超时

其实那数组遍历一次就可以了

注意下标变化的条件

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int T;
 8     cin>>T;
 9     int t = 0;
10     while(T--)
11     {
12         t++;
13         int N;
14         cin>>N;
15 
16         int begin = 1;
17         int end = 1;
18         int left = 1;//这个是每一次累加的左端
19         int max = 0;
20         int sum =0;
21 
22         for(int i = 1;i<=N;i++)
23         {
24             int temp;
25             cin>>temp;
26             if(i==1)
27             {
28                 max = temp;
29             }
30             sum+=temp;
31             if(max<sum)//把这一次累加更新为最大的
32             {
33                 max = sum;
34                 begin = left;
35                 end = i;
36             }
37             if(sum<0)//小于0了那么前面都不要了
38             {
39                 sum = 0;
40                 left = i+1;//此位为负,直接到下一位
41             }
42         }
43 
44         cout<<"Case "<<t<<":"<<endl<<max<<" "<<begin<<" "<<end<<endl;
45 
46         if(T)
47             cout<<endl;
48 
49     }
50     return 0;
51 }
posted @ 2014-07-23 11:45  Run_dream  阅读(186)  评论(0编辑  收藏  举报