俄羅斯套娃(LCS)



俄羅斯套娃

 

問題

 

東賢喜歡玩偶,爲了東賢我們送一下俄羅斯套娃。

俄羅斯套娃是俄羅斯的一個傳統人偶,可以在人偶裏面放入人偶。人偶排成單行站着。每個人偶大小不一,如果前面的人偶的大小比後面的人偶小的話,可以把前面的人偶放入到後面的人偶裏面。

比如說,如果按順序排着大小爲(1, 5, 2, 3, 7) 5個人偶的話,可以把大小爲1的人偶放入到大小爲 5的人偶裏面, 再把這個人偶放入到大小爲7的人偶裏面。但是放入人偶的方法有很多種,如果按照如上例子一樣,依次選擇大小爲1, 2, 3, 7的人偶的話,總共有4個人偶可以進到一個人偶裏面。

如果給出人偶的大小時,請編寫能輸出一次性放入最多人偶的個數的程序。

 

輸入

第一行給出人偶的個數N (1 ≤ N ≤1000)

第二行空格劃分按照順序輸出每個人偶的大小。

輸出

第一行請輸出,在一排中可以放入的最大的人偶個數。

輸入案例

8

1 6 2 5 7 3 5 6

輸出案例

5

 

#include <cstdio>

using namespace std;

int a[1001],b[1001],c[1001];

int main()
{
	int n=0;
	scanf("%d",&n);
	for (int i = 1; i <= n; i++)
	{
		scanf("%d", a+i);
		b[i] = 1;
		c[0] = 0;
	}
	int maxn = 0,maxni=0;
	for (int i = 2; i <= n; i++){
		int maxb = 0, maxi = 0;
		for (int j = 1; j < i; j++)
		{
			if (a[j]<a[i] && b[j]>maxb)
			{
				maxi = j; maxb = b[j];
			}
		}
		if (maxb > 0)
		{
			b[i] = maxb+1; c[i] = maxi;
			if (b[i] > maxn) {
				maxn = b[i];
				maxni =i;
			}
		}
		
	}
	// print count
	printf("%d\n", maxn);
	return 0;
}

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