求最长合法序列
最长合法序列
Time Limit:1000MS Memory Limit:65536K
Total Submit:55 Accepted:4
Description
有k个整数A[1],A[2]…A[k](0 < a[i] <= 2000000000, 0 < i <= k, 0 < k <= 1000,),你需要从前往后选出若干数,使得每一个后面的数都要大于或等于前面的数。例如,对于序列1,4,2,5,2,3,选出1,2,2,3是合法的,但是选出4,2,3是不合法的。
请你编写程序对于一个已知序列,求出最长的合法序列的数的个数。
Input
第一行为n,表示n个测试序列;
第二行到第n+1行,每行开始第一个数为k, k后面紧跟k个数A[1],A[2]….A[k]
Output
输出n行,每行输出一个整数,表示相应测试序列中最长的合法序列的数的个数。
Sample Input
2
12 13 45 23 53 23 88 123 3 125 10 87 89
6 1 4 2 5 2 3
Sample Output
6
4
请高手看一下我写的程序怎么回事不能出来正常结果
#include<stdio.h>
int main(){
int i, j,m=0,a[100],b[100];
scanf("%d",&a[0]);
for(i=1;i<=a[0];i++)
scanf("%d",&a[i]);
b[1]=a[1];
b[0]=1;
for(i=2;i<=a[0];i++){
if(a[i]>=b[1]){
for (j=1;j<=b[0];j++)
{if(a[i]<b[j])
{b[j]=a[i];b[0]=j; m=1;}
}
if(!m)
{ b[b[0]+1]=a[i];
b[0]+=1;}
}
}
printf("%d\n",b[0]);
}