首页 > 代码库 > HDU 1003

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 }