九度OJ 1480 最大上升子序列和 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1480
- 题目描述:
-
一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和.
你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。
- 输入:
-
输入包含多组测试数据。
每组测试数据由两行组成。第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。
- 输出:
-
对于每组测试数据,输出其最大上升子序列和。
- 样例输入:
-
7
1 7 3 5 9 4 8
- 样例输出:
-
18
状态dp[i]表示以i结尾的递增子序列的和。
状态转移方程dp[i] = max(dp[j]) + data[i], 1 <= j < i, 且data[j] < data[i]
#include <stdio.h> int N;
int data[1001];
int dp[1001]; int MIS(){
int i, j;
int max;
for (i = 1; i <= N; ++i){
dp[i] = data[i];
for (j = 1; j < i; ++j){
if (data[i] > data[j] && dp[i] < dp[j] + data[i]){
dp[i] = dp[j] + data[i];
}
}
}
max = -1;
for (i = 1; i <= N; ++i){
if (max < dp[i])
max = dp[i];
}
return max;
} int main(void){
int i;
while (scanf("%d", &N) != EOF){
for (i = 1; i <= N; ++i){
scanf("%d", &data[i]);
}
printf("%d\n", MIS());
} return 0;
}
九度OJ 1480 最大上升子序列和 -- 动态规划的更多相关文章
- 九度OJ 1501 最大连续子序列乘积 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1501 题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 输入: 输入可能包含 ...
- [九度OJ]1011.最大连续子序列
原题链接:http://ac.jobdu.com/problem.php?pid=1011 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ N ...
- 九度oj 1480
题目描述: 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列( ...
- 九度OJ 1451 不容易系列之一 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1451 题目描述: 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若 ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
随机推荐
- Unity3d 使用NPOI读写Excel 遇到的问题
开发环境:unity5.3 NPOI(.net 2.0版 http://npoi.codeplex.com/) 运行环境:PC版, 其他平台没有测试 先上效果图: 实现步骤: 1.新建一个Exce ...
- cocos2d-x 获取图片的某像素点的RGBA颜色
转自:http://www.cnblogs.com/jaoye/archive/2013/02/19/2916501.html ccColor4B c = {, , , }; CCPoint pt = ...
- PostgreSQL的prepare 和 execute 动作背后
我给PostgreSQL的源代码加入了调试信息以后,会有如下表现: 我执行Prepare: postgres=# prepare s(; PREPARE postgres=# 背后的反应: ** In ...
- SQL Server重建索引计划
每周日2点进行”一致性检查“ 每周六1点进行”重建索引“,重建索引会自动完成更新统计信息操作
- Linux 基础 —— RPM
http://liaoph.com/linux-rpm/ 这篇文章主要讲 RPM 软件包管理器的使用. 软件包的演变史 最早期时,软件包是一些可以运行的程序组成的集合,可能还要加上若干配置文件和动态库 ...
- 父 shell,子 shell ,export 与 变量传递
http://blog.csdn.net/dreamcoding/article/details/8519689/ http://caoruntao.iteye.com/blog/1018656
- [MethodImpl(MethodImplOptions.Synchronized)]
在NopCommerce项目的Nop.Core类库中有一个EngineContext类中有一个Initialize方法用到了[MethodImpl(MethodImplOptions.Synchron ...
- 包括后台的Android美食APP项目开源代码
项目简介 小食光定位为一款集美食,社交,LBS服务于一体的美食推荐APP.为你发现周边美食的同时提供一个吃货分享的平台. APP截图 功能模块 美食推荐 :提供基础的美食信息查询: 商家推荐 ...
- LVS配置与安装
IP和主机准备: 准备VIP :20.20.20.1 lvs主机 :172.24.22.70 HA主机:172.24.22.4 包准备:ipvsadm-1.24.tar.gz 1.安装前配置包 2. ...
- 【原】NGUI中的UIRoot脚本功能
UIRoot是NGUI控件的根节点,使用是根据屏幕尺寸自动(或手动)调节节点下子控件的大小. 这个组件声明了在编辑模式下运行:[ExecuteInEditMode],在Inspector编辑修改属性值 ...