杭电 1087

24 篇文章 1 订阅
21 篇文章 0 订阅

                                        超级跳!跳!跳!

时间限制:2000/1000 MS(Java / Others)内存限制:65536/32768 K(Java / Others)
总提交数:56611接受提交内容:26265

问题描述

如今,一种名为“超级跳跃!”的国际象棋游戏!跳!跳跃!“在HDU中很受欢迎。也许你是一个好孩子,对这个游戏知之甚少,所以我现在介绍给你。



游戏可以由两个或两个以上的玩家进行。它由棋盘(棋盘)和一些西洋棋棋子组成,所有西洋棋棋子都用正整数或“开始”或“结束”标记。玩家从起点开始,最后必须跳到终点。在跳跃过程中,玩家将访问路径中的西洋棋棋子,但是每个人都必须从一个棋子跳到另一个绝对更大的棋子(你可以假设起点是最小值,终点是最大值)。并且所有球员都不能倒退。一个跳跃可以从西洋棋棋子到下一个,也可以穿过许多西洋棋棋子,甚至你可以直接从起点到达终点。当然,在这种情况下,你得到零点。只有当他能够根据他的跳跃解决方案获得更高的分数时,玩家才是赢家。
您的任务是根据给定的西洋棋棋子列表输出最大值。

输入

输入包含多个测试用例。每个测试用例的描述如下:
N value_1 value_2 ... value_N 
保证N不大于1000且所有value_i都在32-int范围内。
以0开头的测试用例终止输入,并且不处理该测试用例。

产量

对于每种情况,根据规则打印最大值,并且一行打印一个。

样本输入

3 1 3 2

4 1 2 3 4

4 3 3 2 1

0

样本输出

4

10

3

最长上升子序列

#include<iostream>
#include<iomanip>
#include<algorithm> 
#include<cstring>
#include<sstream> 
#include<cmath>
using namespace std;
int main()
{
	int len[1001],element[1001];
	int n,i,temp,max;
	cin >> n;
	while(n){
		i = 0;
		while(n--){
			cin >> element[i];
			max = element[i];
			for(int j=0; j<i; j++){
				if(element[i] > element[j] && max < len[j] + element[i]){
					max = len[j] + element[i];
				} 
			}
			len[i] = max;
			i++;
		}
		max = len[0];
		for(int j=0; j<i; j++)
			if(max < len[j])
				max = len[j];
		cout << max << endl;
		cin >> n;
	}
    return 0;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值