简单题意:求最长升序子列。
解题思路:这个问题是求最长升序子列。如果 f(n)>f(n-1),则 在n除的最长升序子列等于在n-1的加一,按照这种方法循环下去即可。
代码如下;
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn=1002;
int num[maxn];
int sum[maxn];
int n;
int main()
{
while(scanf("%d",&n)!=EOF&&n)
{
for(int i=1;i<=n;i++)
scanf("%d",&num[i]);
sum[1]=num[1];
int ans=sum[1];
for(int i=2;i<=n;i++)
{
sum[i]=num[i];
for(int j=1;j<i;j++)
{
if(num[j]<num[i]&&sum[j]+num[i]>sum[i])
sum[i]=sum[j]+num[i];
}
if(ans<sum[i])
ans=sum[i];
}
printf("%d\n",ans);
}
return 0;
}