最长递减子序列 动态规划
2013-05-23 12:46
211 查看
这种问题很广泛,啥也不说,直接看代码:
需要注意的是这里的序列不要求连续,给一个sample:
intput:
8
1 2 8 6 5 9 4 3
output:
5
#include <iostream> #include <cstdlib> using namespace std; int num[100]; //记录序列的数组 int dp[100]; int main() { int n; while(cin>>n) { for(int i=1;i<=n;i++) cin>>num[i]; memset(dp,0,sizeof(dp)); int mmax; dp[1]=1; int biggest=-1; for(int i=1;i<=n;i++) { mmax=0; for(int j=1;j<i;j++) { if( num[j]> num[i]&&dp[j]>mmax){ mmax=dp[j]; } } dp[i]=mmax+1; //转移方程:dp[i]=max{dp[j]}+1;j<i; if(dp[i]>biggest)biggest=dp[i]; // } cout<<biggest<<endl; } } /*这里dp[i]的具体含义是:以 num[i]结束的最长递减子序列的长度,所以所求的最后 答案应该是dp[]数组里面的最大值*/
需要注意的是这里的序列不要求连续,给一个sample:
intput:
8
1 2 8 6 5 9 4 3
output:
5
相关文章推荐
- POJ 1952 BUY LOW,BUY LOWER 最长递减子序列 动态规划
- 最长递减子序列--动态规划
- 动态规划----求一个数组的最长递减序列
- POJ 1952 BUY LOW, BUY LOWER(最长递减序列,去重, 动态规划)
- 最长递增、递减子序列(导弹拦截问题)动态规划练习
- DP 动态规划 Problem B 1002 求最长上升子序列的长度
- NYOJ - 79 - 拦截导弹(动态规划--LIS--最长递增子序列变形)
- code[vs] 1044拦截导弹(最长递减+递增子序列)
- 动态规划,最长回文子序列(java实现),输入character,算法应该返回carac
- [算法导论]动态规划---最长公共最序列问题
- 求最长单调递减子序列
- 51nod 1134 最长递增子序列(动态规划)
- 动态规划专题小结:最长上升子序列(LIS)问题
- 动态规划 CSU - 1225 ACM小组的队列 (最长递增子序列的大小和个数)
- 波浪子序列 Wavio Sequence UVA10534 动态规划 最长上升子序列变形
- 最长非降子序列 动态规划 java
- ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
- [动态规划]最长不降子序列-NlogN算法
- 动态规划系列二(最长有序子序列)
- 动态规划 (Dynamic Programming) 之 最长递增子序列(Longest Increase Subsequence)