單調遞增最長子序列

設計一個O(n2)時間的算法,找出由n個數組成的序列的最長單調遞增子序列。

輸入格式:
輸入有兩行: 第一行:n,代表要輸入的數列的個數 第二行:n個數,數字之間用空格格開

輸出格式:
最長單調遞增子序列的長度

輸入樣例:
在這裏給出一組輸入。例如:

5
1 3 5 2 9

輸出樣例:
在這裏給出相應的輸出。例如:

4

#include<algorithm>
#include<iostream>
using namespace std;
int main ()
{
	int n;
	int a[10005],dp[10005];
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=0;i<n;i++){
		dp[i]=1;
		for(int j=0;j<i;j++){
			if(a[i]>a[j])
			dp[i]=max(dp[i],dp[j]+1);
		}
	}
	int ans=0;
	for(int i=0;i<n;i++){
		ans=(ans,dp[i]);
	}
	printf("%d",ans);
	return 0;
 } 
發佈了105 篇原創文章 · 獲贊 117 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章