比赛 动态规划练习2 评测结果 AAAAAEAAAA
题目名称 最长上升子序列 最终得分 90
用户昵称 Menamovic 运行时间 0.005 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2017-03-28 19:03:46
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int i,j,k,l;
int b[1200][10];
int main()
{
	freopen("lis1.in","r",stdin);
	freopen("lis1.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&b[i][1]);
		b[i][2]=1;b[i][3]=0;
	}
	for(i=n-1;i>=1;i--)
	{
		l=0;k=0;
		for(j=i+1;j<=n;j++)
		{
			if((b[j][1]>b[i][1])&&(b[j][2]>l))
			{
				l=b[j][2];
				k=j;
			}
			if(l>0)
			{
				b[i][2]=l+1;b[i][3]=k;
			}
		}
	}
	k=1;
	for(j=1;j<=n;j++)
	{
		if(b[j][2]>b[k][2])  k=j;
	}
	printf("%d\n",b[k][2]);
	/*while(k!=0)
	{
		printf("%d ",b[k][1]);
		k=b[k][3];
	}*/
}