题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1087

题目描述:

求一个序列中 不一定连续(可以跳跃)但是数值递增的最大和子序列

解题思路:

这道题和之前的子序列题不一样,因为无法判断当前节点的取舍情况,即1,2,10序列,这个10我未必会选,因为10后面可能是7,8,9

看起来总觉得和背包问题有什么联系,其实的确差不多。

我们先假设 一个点i,以及某个子最优解点j

一、点j的值是否小于点i,如果小于,则符合条件   即:a[j]<a[i]

二、如果可以进行跳跃,那么有两种可能,①这个总和d[j]可能为负,那么我还不如不加,也就是直接从点i开始

②总和d[j]为正,那么加上a[i]的值,就变成了到达i点时最大的值

即:我们不去考虑具体序列是怎样跳跃的,因为之前的子最优解已经记录了到达某一个点时其最大的权值了。

我们只需要考虑,当到达i点时,我们选取哪个最优解j点最为i的前一个点即可~

想到这里,代码基本上就能够实现了,我们发现跳跃的行为又很像数塔的逻辑

http://blog.csdn.net/sm9sun/article/details/53240542

因为这些问题都属于dp问题,唯一的区别就是状态转移方程的不同,本题的转台转移方程即d[i]=fmax(d[i],d[j]+a[i])

#include<stdio.h>long a[1001];
long d[1001];
int fmax(int a,int b)
{return a>b?a:b;
}int main()
{int n;while(scanf("%d",&n)&&n){for(int i=1;i<=n;i++)   scanf("%d",&a[i]),d[i]=a[i];int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<i;j++)if(a[j]<a[i])   d[i]=fmax(d[i],d[j]+a[i]);ans=fmax(d[i],ans);}printf("%d\n",ans);}return 0;
}

动态规划——最大上升子序列(hdu1087)相关推荐

  1. 54 - 算法 - 动态规划问题 连续子序列和最大

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cmath ...

  2. 动态规划求解最大子序列和

    1 求解最大子序列和题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: nums = [2, 3, -6, 2, 4] 输出: ...

  3. 经典动态规划子串与子序列问题二

    3最长重复子串 上一篇说了两个子序列问题,这片开始说子串问题,要注意到子串和子序列的区别. 看到这个问题可能第一时间想到暴力搜索,确实暴力可以解决一切问题.但是今天说一下利用后缀数组求解的问题,至于什 ...

  4. 动态规划——子序列问题——连续?不连续?

    动态规划--子序列问题--连续?不连续? 子序列问题是动态规划的一个常考题型,本篇文章主要介绍 子序列(连续)和子序列(不连续)两个问题.连续和不连续指的是子序列是否是连续的,还是说中间是可以有间隔的 ...

  5. LeetCode Increasing Triplet Subsequence(动态规划)

    问题:问数组中是否存在一个上升的三元子序列 思路:方法一是使用动态规划求解上升子序列,如果子序列长度等于3,说明存在 方法二是使用small,mid分别记录最小值,第二小值,如果当前值比small小则 ...

  6. 动态规划(DP)——通俗易懂!

    转自:阮行止 1. 从一个生活问题谈起 先来看看生活中经常遇到的事吧--假设您是个土豪,身上带了足够的1.5.10.20.50.100元面值的钞票.现在您的目标是凑出某个金额w,需要用到尽量少的钞票. ...

  7. 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串 (转)...

    作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11969497. 声明:版权所有,转载请注明出处,谢谢 ...

  8. leetcode hot100------121. 买卖股票的最佳时机--动态规划知识点

    暴力法需要二重循环,解法二通过动态规划使得只需要一次遍历即可找到最大值,动态规划适用于多阶段决策过程的最优化问题,明显这里就是一个决定什么时候买和卖出的阶段决策问题. 如果我们用dp[i]表示从第1天 ...

  9. LeetCode动态规划基础题-总结(超级长文)

    前言 五一留校,要不学习一下,整理了一下之前学习的动态的笔记~- -_--- 这部分的题目 确实很有质量的呀,认真看完,会有收获的啦. 感谢代码随想录.LeetCode 真是非常好的练习平台和习题讲解 ...

最新文章

  1. js 文件不让通过地址访问_区块链与以太坊实战(5):访问以太坊节点的N中方式...
  2. Centos6.5 安装配置docker
  3. react antD moment
  4. Google App Engine(GAE)入门教程翻译
  5. C# 中socket根据Receive判断 TcpClient关闭连接的处理
  6. KindEditor js 路径修改及表单提交注意事项
  7. C语言中比较大小的函数模板,C语言中实现模板函数小结 : 不敢流泪
  8. 字符串经典题目(Leetcode题解-Python语言)
  9. 人工智能实战_第一次作业_杨佳宁_16141032
  10. 城建坐标与经纬度转换工具
  11. FMEA学习(2软件)
  12. git bisect_Git Bisect如何使调试更容易
  13. IJCAI 22 | 面向第三方代码库的代码生成
  14. 470Ω排阻阻值测量
  15. Android 系统原生TTS使用
  16. linux服务器离线安装autoconf
  17. HTML5菜单栏特效
  18. 一款牛逼的Java工具类库,GitHub星标10.7k+,你敢用吗?
  19. LED灯具耐压测试怎么做?耐压测试电压多少?
  20. PWM与电压转换芯片:APCPAC芯片

热门文章

  1. 计算机导论python知识点_如何系统地自学 Python?
  2. 爬虫模拟登陆手机验证码_爬虫入门到精通-headers的详细讲解(模拟登录知乎)...
  3. 浅谈Opencl之OpenCL_flush 和 finish区别
  4. java求sum的前n项和_【LeetCode-面试算法经典-Java实现】【015-3 Sum(三个数的和)】...
  5. dedeCMS初始化数据体验包的安装与清除?
  6. IE浏览器兼容性处理与提示
  7. leadshop商城系统源码-前后端代码开源-v1.0.0
  8. java osg_java,osg学习心得
  9. java+ssh+mysql酒店网站管理系统源码
  10. 百度SEO站群腾讯短网址w.url.cn生成源码|仿红源码