动态规划——HDOJ 1003

来源:互联网 发布:网络越来越无聊 编辑:程序博客网 时间:2024/05/16 13:53

HDOJ 1003 Max Sum

/*HDOJ 1003求最大子序列和,简单DP*/#include <iostream>using namespace std;struct Sub_len{int star;int end;}s[100001];int m[100001];int dp[100001];int main(){int nCase,i,n,j,k,_max,_tans;cin>>nCase;for(i=1;i<=nCase;i++){cin>>n;for(j=1;j<=n;j++)cin>>m[j];memset(dp,0,sizeof(dp));dp[1]=m[1];s[1].star=1;s[1].end=1;for(j=2;j<=n;j++){if(dp[j-1]+m[j] >= m[j]){dp[j]=dp[j-1]+m[j];s[j].star=s[j-1].star;s[j].end=j;}else{dp[j]=m[j];s[j].star=j;s[j].end=j;}}_max= -999999;_tans= -1;for(j=1;j<=n;j++){if(dp[j] > _max){_max=dp[j];_tans=j;}}cout<<"Case "<<i<<":"<<endl;cout<<_max<<" "<<s[_tans].star<<" "<<s[_tans].end<<endl;if(i != nCase)cout<<endl;}return 0;}