动规--最长上升序列
终于写到动规了,也是不容易,动规入门,好好写吧
#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; }