这个题目没看懂意思,不过看样例就是最大上升子序列和,还是严格上升的那种。以前做过...所以毫不犹豫就敲了
dp数组代表的是以i结尾的最大上升子序列和...
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int dp[1250],num[1250],n;
while(scanf("%d",&n),n)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&num[i]);
dp[i]=0;
}
dp[0]=0;
int ans=0;
for(int i=1;i<=n;i++)
{
dp[i]=num[i];
for(int j=0;j<i;j++)
{
if(num[i]>num[j])
dp[i]=max(dp[i],dp[j]+num[i]);
}
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
}
return 0;
}