HDU - 1087 Super Jumping! Jumping! Jumping!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087
#include <iostream>
using namespace std;
/****************************************************************************************************************
题意:找到和最大的连续上升序列(别理解错题意,连续不是相邻!!!不是相邻!!!)
思路:
1,dp[i]以a[i]结尾的上升序列的最大值
2,dp[j] =a[j] + max { dp[k] , dp[j]; k<j && a[k]<a[j] };
3,找到当前a[i]之前最大的上升序列且可以和a[i]构成新的上升序列
****************************************************************************************************************/
int a[1005];
int dp[1005];
int main()
{
int N;
while(cin>>N)
{
if(N == 0) break;
for(int i = 1;i <= N;i ++){
cin>>a[i];
dp[i]=a[i];
}
int maxsum=0;
for(int i = 1;i <= N;i ++){
for(int j =1;j < i;j ++){
if(a[j] < a[i] && dp[j]+a[i] > dp[i])
dp[i]=dp[j]+a[i];
}
if(dp[i] > maxsum)
maxsum=dp[i];
}
cout<<maxsum<<endl;
}
return 0;
}
浙公网安备 33010602011771号