算法-动态规划3组合问题-最长递增子序列问题
2021/5/6 22:28:36
本文主要是介绍算法-动态规划3组合问题-最长递增子序列问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
算法-动态规划3-最长递增子序列问题
最长递增子序列问题
LIS问题描述:给出一个数列A,求A的一个长度最大的子数列B,使得B是一个递增数列。
例如: 数列A:5,2,8,6,3,6,9,7 一个递增的子数列为5,8,9; 一个长度最大的递增子数列为2,3,6,9或者2,3,6,7,则其最大长度为4.
代码:
//a为原数组,n为数组长度,L为存储最长递增子序列的长度的数组,x[][]为对应的最长子序列 int increate(int a[], int n) { int L[10], x[10][10]; int i,j,k,z=0; for (i = 0; i < n; i++) { //初始化,最长递增子序列长度为1 L[i] = 1; x[i][0] = a[i]; } for (i = 1; i < n; i++) { //依次计算a[0]~a[i]的最长递增子序列 int max = 1; for (j = i - 1; j >= 0; j--) { //对于所有a[j]<a[i] if ((a[j] < a[i]) && (max < L[j] + 1)) { max = L[j] + 1; L[i] = max; //cout << i<<max << endl; for (k = 0; k < max - 1; k++) { //存储最长递增子序列 x[i][k] = x[j][k]; //不断继承x[i][0~max-2] } x[i][max - 1] = a[i]; } } } for (z=0,i = 1; i < n; i++) { //求所有递增子序列的最大长度 //cout << L[i] << endl; if (L[z] < L[i]) { z = i; } } //cout << z; cout << "最大递增子序列是:"; for (i = 0; i < L[z]; i++) { //输出最大递增子序列 cout << x[z][i] << " "; } cout << endl; return L[z]; //返回最长递增子序列的长度 }
可执行代码:
#include<iostream> using namespace std; //a为原数组,n为数组长度,L为存储最长递增子序列的长度的数组,x[][]为对应的最长子序列 int increate(int a[], int n) { int L[10], x[10][10]; int i,j,k,z=0; for (i = 0; i < n; i++) { //初始化,最长递增子序列长度为1 L[i] = 1; x[i][0] = a[i]; } for (i = 1; i < n; i++) { //依次计算a[0]~a[i]的最长递增子序列 int max = 1; for (j = i - 1; j >= 0; j--) { //对于所有a[j]<a[i] if ((a[j] < a[i]) && (max < L[j] + 1)) { max = L[j] + 1; L[i] = max; //cout << i<<max << endl; for (k = 0; k < max - 1; k++) { //存储最长递增子序列 x[i][k] = x[j][k]; //不断继承x[i][0~max-2] } x[i][max - 1] = a[i]; } } } for (z=0,i = 1; i < n; i++) { //求所有递增子序列的最大长度 //cout << L[i] << endl; if (L[z] < L[i]) { z = i; } } //cout << z; cout << "最大递增子序列是:"; for (i = 0; i < L[z]; i++) { //输出最大递增子序列 cout << x[z][i] << " "; } cout << endl; return L[z]; //返回最长递增子序列的长度 } int main() { int n; int a[100]; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } cout << increate(a,n); }
时间复杂度O(n^2)。
这篇关于算法-动态规划3组合问题-最长递增子序列问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-06数据结构和算法面试题详解与实战
- 2024-11-06数据结构与算法面试题详解及练习
- 2024-11-06网络请求面试题详解及实战技巧
- 2024-11-06数据结构和算法面试真题详解及备考指南
- 2024-11-06数据结构与算法面试真题解析与练习指南
- 2024-11-06网络请求面试真题详解及实战攻略
- 2024-11-06数据结构和算法大厂面试真题详解与实战
- 2024-11-06数据结构与算法大厂面试真题详解及入门攻略
- 2024-11-06网络请求大厂面试真题详解及应对策略
- 2024-11-06TS大厂面试真题解析与实战指南