题目链接: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; }