动态规划——最长升序子序列
来源:互联网 发布:python 2.7不支持中文 编辑:程序博客网 时间:2024/06/05 03:22
问题描述
一个数的序列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)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8).
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
“test.cpp”
#include<iostream>using namespace std;#include<vector>void test(){int arr[] = {0,1,2,6,3,5,6,7,8,9,0};//int arr[] = {2,3,4,2,3,4,5,0,3};int end = 0;int mark_end = 0;int size = 1;int mark_size = -1;//[开始位置,长度][长度,结束位置][开始位置,结束位置]三者等价for(int i = 1;i < sizeof(arr)/sizeof(arr[0]);++i){if(arr[i] >= arr[end])++size;else{if(size > mark_size){mark_end = end;mark_size = size;}//结束后长度重新置1,从新位置开始记录size = 1;}++end;}//如果arr[i] > arr[end],size++后,并没有和mark_size的值比较if(size > mark_size){mark_end = end;mark_size = size;}int index = 0;vector<int> tmp(mark_size);for(int i = mark_end - mark_size + 1;i <= mark_end;++i){tmp[index++] = arr[i];}//打印for(int i = 0;i < tmp.size();++i){cout<<tmp[i]<<" ";}cout<<endl;}int main(){test();return 0;}
动态规划:求最长升序子序列的长度
“test.cpp”
#include <iostream>using namespace std;#include <vector>void test(){int arr[] = {2,3,4,2,3,4,5,0,3};int size = sizeof(arr)/sizeof(arr[0]);int maxlen = -1;vector<int> len(size,1);//存放以i为终点的最长升序序列的个数for (int i = 1;i < size;++i){int max = 0;for (int j = 0;j < i;++j){//寻找以i为终点,前i-1个序列中的最长子序列,即为最优的子状态if (arr[j] < arr[i] && len[j] > max){max = len[j];}}len[i] = max + 1;if (maxlen < len[i]){maxlen = len[i];}}//打印状态列表for (int i = 0;i < size;++i){cout<<len[i]<<" ";}cout<<endl;cout<<"最长升序序列长度:"<<maxlen<<endl;}int main(){test();system("pause");return 0;}
0 0
- 动态规划——最长升序子序列
- 动态规划 最长升序子序列
- 动态规划:最长升序子序列
- 动态规划——最长子序列
- 动态规划—最长子序列问题
- 动态规划—01最长子序列
- 动态规划——最长公共子序列(LCS)&最长递增子序列(LIS)
- 动态规划——最长递增子序列和最长公共子序列
- 动态规划——最长公共子序列
- 动态规划——最长递增子序列
- 动态规划——最长递增子序列 收藏
- 最长不降子序列——动态规划
- 动态规划——最长公共子序列(LCS)
- 动态规划——数组中最长递减子序列
- 动态规划——数组中最长递减子序列
- 动态规划——最长上升子序列
- 动态规划——数组中最长递减子序列
- 动态规划算法——最长公共子序列求法
- 托管堆内存分配优化
- (转)智能投顾使命的终结与华尔街的胜利
- HDU 2639 (背包第K优解)
- 图的遍历
- 数据结构实验之图论四:迷宫探索
- 动态规划——最长升序子序列
- Hadoop 第六课 WebHDFS REST API
- 勾股定理一日一证连载166
- Hadoop datanode添加与删除
- 传统APP与微信端APP十大优劣对比
- MyEclipse连接SQL
- HDU 2709 Sumsets 递推
- 1023. Have Fun with Numbers (20)?
- rtl8192 调试