俄羅斯套娃
問題
東賢喜歡玩偶,爲了東賢我們送一下俄羅斯套娃。
俄羅斯套娃是俄羅斯的一個傳統人偶,可以在人偶裏面放入人偶。人偶排成單行站着。每個人偶大小不一,如果前面的人偶的大小比後面的人偶小的話,可以把前面的人偶放入到後面的人偶裏面。
比如說,如果按順序排着大小爲(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;
}