动规--最长上升序列

终于写到动规了,也是不容易,动规入门,好好写吧

#include<bits/stdc++.h>
using namespace std;
int b[1010],c,d,n,m,j,i;
struct JC{
    int x;
    int y;
    int num;
}a[1000001];
int main()
{
    memset(b,0,sizeof(b));    
    int i=1;
    while(cin>>b[i])
    {
            a[i].x=b[i];
            a[i].y=1;
            a[i].num=0;     
            i++;
            m=i;
    }
    for(int i=m-1;i>=1;i--)
    {
        n=0;
        d=0;
        for(int j=i+1;j<=m;j++)
        {
            if((a[j].x>a[i].x)&&(a[j].y>n))
            {
                n=a[j].y;
                d=j;        
            }
        }
        if(n>0)
        {
            a[i].y=1+n;
            a[i].num=d;
        }
    }
    d=1;
    for(int j=1;j<=m;j++)
    {
        if(a[j].y>a[d].y)
        d=j;
    }
    cout<<a[d].y;

    return 0;
}
原文地址:https://www.cnblogs.com/5t2y0/p/9466609.html