记录编号 505231 评测结果 AAAAAAAAAA
题目名称 最长上升子序列 最终得分 100
用户昵称 Gravatarleon 是否通过 通过
代码语言 C++ 运行时间 0.077 s
提交时间 2018-08-12 10:57:07 内存使用 3.62 MiB
显示代码纯文本
#include<cstdio> 
#include<iomanip>
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
	freopen("lis1.in","r",stdin);    
    freopen("lis1.out","w",stdout); 
    int n,f[1002][1002],l,k;
    cin>>n;
    memset(f,0,sizeof(f));
    for(int i=1;i<=n;i++){
		cin>>f[i][1];
		f[i][2]=1;
		f[i][3]=0;
    }
    for(int i=n-1;i>=1;i--){
		l=0;
		k=0;
		for(int j=i+1;j<=n;j++){
			if(f[j][1]>f[i][1]&&f[j][2]>l){
			l=f[j][2];
			k=j;	
			}
			if(l>0){
				f[i][2]=l+1;
				
				f[i][3]=k;
			}
		}
    }
    k=1;
    for(int i=1;i<=n;i++){
		if(f[i][2]>f[k][2]){
			k=i;
		}
    }
    cout<<f[k][2]<<endl;
return 0;
}