不解释,太水了,但没想到我也能推dp,该开始练练了
 
  
  #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=
1000+
100;
int a[maxn],dp[maxn];
int n;
int main()
{
    while(~scanf(
"%d",&n)&&
n)
    {
        int maxx=
0;
         memset(dp,0,
sizeof(dp));
         for(
int i=
1;i<=n;i++
)
            scanf("%d",&
a[i]);
         for(
int i=
1;i<=n;i++
)
         {   int maxi=
0;
              for(
int j=
1;j<i;j++
)
               if(a[j]<a[i]) maxi=
max(maxi,dp[j]);
             dp[i]=a[i]+
maxi;
             maxx=
max(maxx,dp[i]);
         }
         printf("%d\n",maxx);
    }
    return 0;
} 
  
  
 
转载于:https://www.cnblogs.com/Wangwanxiang/p/7705377.html