最长不下降子序列(C++)

最长不下降子序列(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;
}

结果展示:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章