HDU 1003
一道思维题,求和最大的子序列
https://vjudge.net/problem/HDU-1003
#include<iostream>
using namespace std;
int num[100005];
int main(){
int t,n,i;
cin>>t;
for(i = 1;i <=t;i++){
int start = 1,end,sum = 0,ans = -INT_MAX,temp= 1; // ans赋值一定要为负
cin>>n;
//输入
for(int j = 1;j <= n;j++)
cin>>num[j];
//核心代码
for(int k = 1;k <=n;k++){
if(sum >= 0)
sum += num[k];
else{
sum = num[k];
temp = k;
}
if(sum > ans){
ans = sum;
start = temp;
end = k;
}
}
//输出
cout<<"Case "<<i<<":\n";
cout<<ans<<" "<<start<<" "<<end<<endl;
if(i!=t)
cout<<endl;
}
return 0;
}
作者:LightAc
出处:https://www.cnblogs.com/lightac/
联系:
Email: dzz@stu.ouc.edu.cn
QQ: 1171613053
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号