俄罗斯套娃
问题
东贤喜欢玩偶,为了东贤我们送一下俄罗斯套娃。
俄罗斯套娃是俄罗斯的一个传统人偶,可以在人偶里面放入人偶。人偶排成单行站着。每个人偶大小不一,如果前面的人偶的大小比后面的人偶小的话,可以把前面的人偶放入到后面的人偶里面。
比如说,如果按顺序排着大小为(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;
}