hdoj1087

最长上升子序列(不连续)

#include<iostream>
using namespace std;
int main()
{
        int n,max;
        int a[1000]={0},f[1000]={0};
        while(cin>>n&&n!=0)
        {
                for(int k=0;k<n;k++)
                {
                        cin>>a[k];
                        f[k] = a[k];
                }
                max = 0;
                for(int i=1;i<n;i++)
                {
                        for(int j=0;j<i;j++)
                                if(a[i]>a[j] && f[i]<f[j]+a[i]) f[i] = f[j]+a[i];
                        if(f[i] > max) max=f[i];
                }
                cout<<max<<endl;
        }
}
                                                                                                                                                 

 

posted @ 2013-02-23 15:48  茉莉花茶  阅读(150)  评论(0编辑  收藏  举报