C语言——最长上升子序列

最长上升子序列

最长上升子序列 一个数的序列 bi,当 b1
#include
int main()
{
	int n;
	scanf("%d",&n);
	int list[n],max[n];  //
	for(int i = 0; i < n; ++i)
	{
		scanf("%d",&list[i]);
		max[i]=1;
	}
	for(int i = 1; i < n; ++i)
		for(int j = 0; j < i; ++j)                   //这段代码的作用就是让max数组中的最大值为最长上升子序列的长度
		{					     //举个例子:4 2 1 3 5
			if(list[j]=max[i])//先执行第一次循环:4不小于2,所以内层循环j的这次循环结束,然后i=2; 
			{				     //执行第二次循环:4不小于1,2不小于1,所以内层循环结束 然后i=3
				max[i] = max[j] + 1;         //执行第三次循环 4不小于3,2小于3,并且max[1]=max[3]=1,所以执行if条件语句,max[3]=max[1]+1=2;然后虽然1也小于3,但此时的max[2]=1= max[4]=2,执行if语句,所以max[4]=max[3]+1=3;
		}
	int j = -1;
	for(int i = 0; i < n; ++i)
	{
		if(max[i]>j)
			j = max[i]; //这段代码的作用就是输出max数组中的最大值,也就是最长上升子序列的长度
	}	
	printf("%d\n",j);
	return 0;
}

你可能感兴趣的:(C)