动态规划——求最长下降/上升子序列
来源:互联网 发布:淘宝天猫店铺转让 编辑:程序博客网 时间:2024/05/16 07:39
应该算是比较经典的一道题目了。无论是按字母顺序或者按数字顺序,解题的思路都应该是一样的。用动态规划,划分为子问题,就是每个元素当前位置之前的最长子序列加上它自身这个值,就是当前的最长子序列长度。总结一下,算法核心思想就是要找到当前位置元素之前的每个元素对应的最长下降/上升子序列的最大值,然后将它加一,就等于当前位置的子序列长度值了。其复杂度为$latex O(n^{2})$.详见下代码。
以最长下降子序列为例:
#include"stdio.h"#include"string.h"int main(void){ int n; scanf("%d",&n); while(n--) { int m,i,j,max,maxlen; //max用于记录当前位置之前的子序列最大值,maxlen用于记录整个串的最长子序列最值 scanf("%d",&m); int height[m]; int sum[m]; maxlen=1; for(i=0;i<m;i++) { scanf("%d",&height[i]); sum[i]=1; max=0; for(j=i-1;j>=0;j--) { if(height[j] > height[i] && sum[j]>max) max=sum[j]; } sum[i]+=max; if(sum[i]>maxlen) maxlen=sum[i]; } printf("%d\n",maxlen); } return 0;}
查看原文:http://www.wyblog.cn/2016/10/10/%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92-%e6%b1%82%e6%9c%80%e9%95%bf%e4%b8%8b%e9%99%8d%e4%b8%8a%e5%8d%87%e5%ad%90%e5%ba%8f%e5%88%97-2/
0 0
- 动态规划——求最长下降/上升子序列
- 动态规划——求最长上升子序列长度
- 动态规划求最长上升子序列
- 动态规划:求最长上升子序列
- 动态规划----求最长上升子序列
- joj 2529 Chorus 动态规划 最长上升子序列和最长下降子序列
- 蓝桥杯 拦截导弹 动态规划(最长下降子序列+最长上升子序列)
- 动态规划——最长上升子序列
- 动态规划——最长上升子序列
- 动态规划——最长上升子序列问题(LIS)
- 动态规划——最长上升子序列问题
- 最长上升子序列——动态规划
- 动态规划练习——最长上升子序列
- 动态规划——最长上升子序列
- 动态规划——最长上升子序列
- 动态规划——最长上升子序列
- c++动态规划基础——最长上升子序列
- 蓝桥杯训练:动态规划——最长上升子序列
- spark1.6.0分布式安装
- 用树莓派学编程系列4——环境光照强度测量
- 设计模式之——观察者模式
- 【leetcode】3. Longest Substring Without Repeating Characters 【medium】
- 10-10
- 动态规划——求最长下降/上升子序列
- 开山斧 0.3.5版本
- matrix3
- Nodejs + express + ejs, jade
- CSS3快速上手之19:响应式图片与文本
- Eclipse无法自动编译出class文件,WEB-INF中classes文件夹中没有文件
- 例题27 UVa10635 Prince and Princess(DP:LIS的nlogn算法)
- 把一个音视频文件的视频部分抽取出来播放
- Netty4详解二(开发第一个Netty应用程序)