TOJ 1052 - Redraiment的走法

题目描述

Redraiment是个聪明人,总是以奇怪的思考方法思考问题,但不知道为什么,他的解答总是最最巧妙,我们隆重地称他为诡异人! 有一天Jesse不经意中发现,诡异人的走路方法很特别,于是特别关注了他的走路规则。他发现诡异人总是往高处走,但走的步数总是最多,不知道为什么?你能替Jesse研究研究他最多走的步数吗? 发现了你也会是个聪明人!^_^

输入

本题为多样例。 每个样例都以整数n(0 <n≤10000)开始,下面紧跟着n行。每行都有一个整数h(1≤h≤100),表示该地点的高度。

输出

对于每种情况,输出最大步数。

样例输入

<span style="color:#333333">5
1 2 3 4 5
6
2 5 1 5 4 5</span>

样例输出

 

5

3

 

思路:

 

 

       最大上升子序列。

代码:

#include<stdio.h>
#define N 1010
int main()
{
	int i,j,k,t,n;
	int a[N];
	int len[N];
	int max;
	while(scanf("%d",&n)!=EOF)
	{
		for(i = 1; i <= n;i ++)
		scanf("%d",&a[i]);
		len[1] = 1;
		for(i = 2;i <= n;i ++)
		{
			t = 0;
			for(k = 1;k < i;k ++)
			{
				if(a[k] < a[i] && t < len[k])
					t = len[k];
			 } 
			 len[i] = t+1;
		}
		max = 0;
		for(i = 1;i <= n;i ++)
		{
			if(len[i] > max)
				max = len[i];
		}
		printf("%d\n",max);
	}
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值