一道思维题,求和最大的子序列
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;
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;
}
原文:https://www.cnblogs.com/lightac/p/10618442.html