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

結果展示:
在這裏插入圖片描述

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