http://acm.hdu.edu.cn/showproblem.php?pid=1087

最大递增连续子串和。。。dp[i]表示以第i点为结束点最大连续子串和

状态转移方程dp[i]=s[i];

 if(s[j]<s[i]) dp[i]=max(dp[i],dp[j]+s[i]);

AC代码:

#include<iostream>
#include<string.h>
#include<algorithm>
#define N 1001
using namespace std;
int dp[N];
int s[N];
int main()
{
	int n;
	while(cin>>n&&n)
	{  
		for(int i=0;i<n;++i)
			cin>>s[i];
		 dp[0]=s[0];
		int  maxx=dp[0];
		 for(int i=1;i<n;++i)
			{   dp[i]=s[i];
				for(int j=0;j<i;++j)
				 if(s[j]<s[i]) dp[i]=max(dp[i],dp[j]+s[i]);
				   maxx=max(maxx,dp[i]);
		    }
		 cout<<maxx<<endl;
	}return 0;
}


你可能感兴趣的:(http://acm.hdu.edu.cn/showproblem.php?pid=1087)