c_cpp 最长的子序列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的子序列相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

void print(vector <int> a, vector <int> prev, int x){
    if(x == -1) return;
    print(a,prev,prev[x]);
    cout << a[x] << " ";
}

void lis(vector <int> a){
    int n = a.size();
    vector <int> res(n,1);
    vector <int> prev(n,-1);
    for(int i=1; i<n; i++){
        for(int j=0; j<i; j++){
            if(a[j] < a[i]){
                int temp = 1+res[j];
                if(temp > res[i]){
                    res[i] = temp;
                    prev[i] = j;
                }
            }
        }
    }
    int largest = INT_MIN, max_i;
    for(int i=0; i<n; i++){
        if(res[i] > largest){
            largest = res[i];
            max_i = i;
        }
    }
    cout << "length of lis: " << largest << endl << "and the sequence is" << endl;
    print(a,prev,max_i);
}

int main(){
    int n;
    cout << "enter no. of elements" << endl;
    cin >> n;
    vector <int> a(n);
    cout << "enter the elements" << endl;
    for(int i=0; i<n; i++) cin >> a[i];
    lis(a);

    return 0;
}

以上是关于c_cpp 最长的子序列的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 最长的子序列

c_cpp 最长的子序列

c_cpp 最长的子串

c_cpp 最长的子字符串,不重复字符

c_cpp 最长的共同子序列

c_cpp 最长的字符串子序列