您的位置:首页 > 产品设计 > UI/UE

zoj 2136 Longest Ordered Subsequence(最长上升子序列,第二次写 = =)

2010-11-06 21:43 363 查看
记得CW说还要弄个数组记录前面的子序列的终止元素的那个值 = = 然后弄了仨数组,鼓道了半天,不对。。。



看了以前写的,很简洁啊,理解乐 = =。。



求出前面小于i的那个存的长度的最大值去更新i要存的值



#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <memory.h>
using namespace std;
int main(void)
{
	int ncases,n;
	int los[1002],max[1002];
	cin >>  ncases;
	while( ncases-- )
	{
		cin >> n;
		memset(max,0,sizeof(max));
		for(int i=1; i<=n; i++)
			cin >> los[i];
		max[1] = 1;
		for(int i=2; i<=n; i++)
		{
			int maxl = 0;
			for(int k=1; k<i; k++)
				if( los[i] > los[k] )
				{
					if( max[k] > maxl)
						maxl = max[k];
				}
			max[i] = maxl+1;
		}
		int outputmax = 0;
		for(int i=1; i<=n; i++)
			if( max[i] > outputmax )
				outputmax = max[i];
		cout << outputmax << endl ;
		if( ncases )
			cout << endl;
	}
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: