美女购物
一天,MM陪佳佳逛街,看到有许多漂亮的衣服,佳佳要让MM给她买衣服,但是MM发现衣服的价格实在高的令人胆寒,MM当然不愿意买这么贵的衣服,因此她就想着从街头逛到街尾买到的衣服价格总要比前一件购买的价格低,绝不回头购买,但是他又想让佳佳高兴,所以他想尽可能的多买几件衣服,你能帮帮她吗??
Input
测试数据包括两行: 第一行输入一个整数N(N<10000)第二行输入N个整数,表示从街头到街尾的衣服的价格(按从头到尾的顺序)。
Output
测试数据的输出只占一行,输出佳佳最多能买到多少件衣服。
Example Input
300 250 275 252 200 138 245 130 300 128 244 243 242 241 240 239
Example Output
10
#include<stdio.h>
#define N 100
int main()
{
int a[N],b[N];
int n,i,j;
int max;
while(scanf("%d",&n))
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
b[0]=1;//初始化,以a[0]结尾的最长递增子序列长度为1
for(i=1;i<n;i++)
{
b[i]=1;
for(j=0;j<i;j++)
{
if(a[i]<a[j])//关键算法,每次调用上一级的b[i];
{
b[i]=b[i]>b[j]+1?b[i]:b[j]+1;
}
}
}
for(i=max=0;i<n;i++)//求出整个数列的最长递增子序列的长度
{
if(max<b[i])
{
max=b[i];
}
}
printf("%d\n",max);
}
return 0;
}