最長不下降子序列(C++)
問題描述:
在一個數字序列中,找到一個最長的子序列(可以不連續),使得這個子序列是不下降(非遞減)的。
#include<stdio.h>
#include<vector>
using namespace std;
int main(){
int A[10000];
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &A[i]);
}
vector<vector<int> > ve1;
vector<int> ve2;
ve2.push_back(A[0]);
ve1.push_back(ve2);
for(int j = 1; j < n; j++){
if(A[j] >= ve1[ve1.size()-1][ve1[ve1.size()-1].size() - 1]){
vector<int> ve3 = ve1[ve1.size()-1];
ve3.push_back(A[j]);
ve1.push_back(ve3);
}else{
vector<int> ve3 = ve1[ve1.size()-1];
ve1.push_back(ve3);
}
}
for(int k = 0; k < ve1[ve1.size() - 1].size(); k++){
printf("%d ", ve1[ve1.size() - 1][k]);
}
printf("\n");
return 0;
}
結果展示: