hdu1087Super Jumping! Jumping! Jumping!(最大递增序列和)
题意:棋牌游戏如今,一种被称为“超级跳!跳!跳!“HDU是非常流行的。也许你是个好孩子,这个游戏知之甚少,所以我介绍给你吧。

可以玩游戏由两个或两个以上的球员 。它由一个棋盘(棋盘)和一些棋子(棋子),所有的棋子标记的正整数或“开始”或“结束”。玩家从起始点和终点终于跳进。在跳跃的过程中,玩家将访问路径中的棋子,但每个人都必须从一个棋子跳跃到另一个绝对更大(可以假定启动点是一个最小和终点是一个最大)。所有玩家都可以不走回头路。一个跳跃到下一个棋子,也可以去跨越许多的棋子,甚至你可以从起始点到终点直线。当然,在这种情况下,你得到零点。一个球员是一个胜利者,当且仅当,他可以根据他跳的解决方案,获得更大的成绩。请注意,你的分数来自你跳路径上的棋子价值的总和,
你的任务是输出的最大值,根据给定的棋子列表。
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087
题目解析:简单的来说就是求一个序列中一组递增序列的最大和;
如:1,9,6 ,2 ,4,10,5,3,2
它的最大递增序列和为20,递增序列为1,9,10
和最大递增序列有点相似,但算法不太相同;
运行时间:
| 9139511 | Accepted | 1087 | 15MS | 432K | 856 B | C++ |
代码实现:
#include<stdio.h>
#include<cstring>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define MAX 1005
int dp[MAX];//dp[i]存储与num[i]构成递增序列中和最大的一个;
int num[MAX];
int max(int a,int b)
{
return(a>b?a:b);
}
int main()
{
//freopen("input.txt","r",stdin);
int i,j,n;
while(scanf("%d",&n),n)
{
for(i=0;i<n;i++)
scanf("%d",&num[i]);
dp[0]=num[0];
int max1=0;
for(i=1;i<n;i++)
{
dp[i]=num[i];
for(j=0;j<i;j++)
{
if(num[i]>num[j])//找出比num[i]小的数num[j],dp[j]存储与num[j]构成递增序列中和最大的一个;所以加上num[i],也构成递增序列, {
if(dp[i]<dp[j]+num[i])//比较与num[i]能构成递增序列的这些序列和,找出最大的一个,
dp[i]=dp[j]+num[i];
}
}
max1=max(dp[i],max1);//max1为这些递增序列中和最大的一个;
}
printf("%d\n",max1);
}
return 0;
}
hdu1087Super Jumping! Jumping! Jumping!(最大递增序列和)的更多相关文章
- HDU 1087 Super Jumping! Jumping! Jumping! 最长递增子序列(求可能的递增序列的和的最大值) *
Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64 ...
- ACM: Racing Gems - 最长递增序列
Racing Gems You are playing a racing game. Your character starts at the x axis (y = 0) and procee ...
- POJ 2533 Longest Ordered Subsequence 最长递增序列
Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequenc ...
- uva103(最长递增序列,dag上的最长路)
题目的意思是给定k个盒子,每个盒子的维度有n dimension 问最多有多少个盒子能够依次嵌套 但是这个嵌套的规则有点特殊,两个盒子,D = (d1,d2,...dn) ,E = (e1,e2... ...
- LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)
Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...
- UVA1619 栈维护递增序列
先说这题的关键性质:每一个数应该只会计算一次,它有一个最小区间[L,R],即它在这个区间内是最小的,最小区间内任何包含它的子区间都不会大于F(L,R)=(a[L]+...+a[R])*min(a[l] ...
- [LeetCode] Longest Continuous Increasing Subsequence 最长连续递增序列
Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...
- [LeetCode] Number of Longest Increasing Subsequence 最长递增序列的个数
Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...
- [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence
Given an unsorted array of integers, find the length of longest continuous increasing subsequence (s ...
随机推荐
- stm32之中断系统
概述: 提供中断控制器,用于总体管理异常,称之为“嵌套向量中断控制器:Nested Vectored Interrupt Controller (NVIC) VIC:中断管理器: NVIC:内嵌中断管 ...
- 由zImage生成uImage
一.手动使用mkimage命令 mkimage -A arm -O linux -T kernel -C none -a 30007fc0 -e 30007fc0 -n uImage -d /wo ...
- Javascript 运动基础 01
JS运动基础 运动基础 让Div运动起来 速度——物体运动的快慢 运动中的Bug 不会停止 速度取某些值会无法停止 到达位置后再点击还会运动 重复点击速度加快 匀速运动 速度不变 <s ...
- 432B - Football Kit
解题思路: 暴力绝对TLE 一个队伍穿主场球衣的次数 = 这个队伍的客场球衣颜色与其他队主场球衣颜色起冲突的次数 + (n - 1) #include <stdio.h> #include ...
- Qt中文件操作遇到的(变量,容器,结构体)
咳咳!总结了一下我在使用QT文件操作时所用到的,再接再厉!再接再厉!! 1.保存到文件: QFile file("test.txt"); if (!file.open(QIODev ...
- 深入JDK源码之Arrays类中的排序查找算法(转)
原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...
- 【转】关于C语言生成不重复的随机数
一 说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了.但是新手不这么 干,他们总是抱有疑惑,我就是一个新手,而且较菜…… ...
- 西安力邦智能医疗&可穿戴设备沙龙--第1期---苹果HealthKit、谷歌GoogleFit来袭,智能医疗要爆发吗?
背 景: "可穿戴设备"成为2014的行业热点,从Google Glass到苹果iWatch, 越来越多的企业推出了包含眼镜.腕带.鞋等各种可穿戴设备,"可穿戴&q ...
- android-studio 安装gradle
http://services.gradle.org/distributions 下载需要的gradle 放到C:\Users\Administrator\.gradle\wrapper\dists\ ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
上篇我们完成了简单的AI编写,但是各个坦克移动时之间是可以重合的, 这节课我们来完成坦克之间的碰撞检测,还是在上篇的EnemyAI中完成. 1.我先现在坦克类Tank中添加两个成员变量: CC_SYN ...