又是一道模板题!!
#include <cstdio>
#include <cstring>
const int maxn=1010;
int a[maxn],dp[maxn],m,Max;
void LICS()
{
memset(dp,0,sizeof(dp));
for(int i=0;i<m;i++)
{
dp[i]=a[i];
for(int j=0;j<i;j++)
if(a[i]>a[j] && dp[i]<dp[j]+a[i])//a[i]<a[j]就是单调递减最长子序列,思想上和递增的是一样的
dp[i]=dp[j]+a[i];
}
Max=0;
for(int i=0;i<m;i++)
if(Max<dp[i])
Max=dp[i];
}
int main()
{
int n;
scanf("%d",&m);
while(m!=0)
{
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
LICS();
printf("%d\n",Max);
scanf("%d",&m);
}
return 0;
}