动态规划求最长递增子序列
来源:互联网 发布:文件打开软件 编辑:程序博客网 时间:2024/05/18 15:29
描述:这是一个经典的LIS(即最长上升子序列)问题,请设计一个尽量优的解法求出序列的最长上升子序列的长度。
给定一个序列A及它的长度n请返回LIS的长度。
动态规划求解过程:
给定一个数组A,以及他的长度N
生成长度为N的数组dp
dp[i]的含义为必须以A[i]结尾时的最长递增子序列的长度.
显然 dp[0]=1;
对于i 为1-N-1时,dp[i]为比A[i]小的数结尾的最长的子序列的长度+1
状态转移方程为 dp[i] = max{dp[j]+1|0<=j<i,A[j]<A[i]};
class LongestIncreasingSubsequence {public: int getLIS(vector<int> A, int n) { if(!n) return 0; int *dp = new int[n]; dp[0]=1; int maxlongs = 1; for (int i=1; i<n; ++i) { int maxlen = 0; for (int j=i-1; j>=0; --j) { if(A[j]<A[i]) maxlen = max(maxlen,dp[j]); } dp[i] = maxlen +1; maxlongs = max(dp[i],maxlongs); } return maxlongs; }};
0 0
- 动态规划求最长递增子序列
- 动态规划求最长递增子序列
- 动态规划-求最长递增子序列
- 动态规划之----求最长递增子序列
- 求数组中最长递增子序列 动态规划
- 动态规划求一道 类最长递增公共子序列
- 动态规划求 最长递增子序列
- codevs合唱队形 动态规划求最长递增子序列
- 动态规划求最长递增子序列(longest increasing subsequence)
- 动态规划求最长递增子序列(BJFUOJ 1482)
- 最长递增子序列(动态规划)
- 动态规划:最长单调递增子序列
- 动态规划之最长递增子序列
- 动态规划--最长单调递增子序列
- 最长递增子序列(动态规划)
- 动态规划_最长递增子序列
- 动态规划之最长递增子序列
- 【动态规划】单调递增最长子序列
- redis cmd 使用例子
- android中permission_group与permisson区别、作用?
- Maven deploy配置方法
- poj 1083 Moving Tables
- 华硕笔记本安装windows8.1和ubuntu双系统注意事项
- 动态规划求最长递增子序列
- DB2死锁问题与日常维护
- 关于工资的秘密
- lightoj - 1033 - Generating Palindromes - dp/ 最长公共子序列lcs
- 阿里巴巴校招内推一面总结
- 使用硬件加速,提高Android的动画性能
- php如何创建验证码
- JNI相关
- win10安装net framework 3.5一直失败的解决办法