void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

写烂了的一道题了,但是木办法,还是再写一遍吧,不多说直接上代码

还是老思路,新建一个数组存储当前值之前的最多递增序列个数,往前循环一遍找出最大的+1

View Code
1 #include <stdio.h>
2 #include <stdlib.h>
3  int main(void)
4 {
5 int n,maxl,i,j,ncases;
6 int s[1003],max[1003],result;
7 scanf("%d",&ncases);
8 while(ncases--)
9 {
10 scanf("%d",&n);
11 result = 0;
12 for(i=1; i<=n; i++)
13 scanf("%d",&s[i]);
14 max[1] = 1;
15 for(i=2; i<=n; i++)
16 {
17 maxl = 0;
18 for(j=1; j<i; j++)
19 {
20 if(s[i] > s[j])
21 {
22 if(maxl < max[j])
23 maxl = max[j];
24 }
25 }
26 max[i] = maxl +1;
27 }
28 for(i=1; i<=n; i++)
29 if(max[i] > result)
30 result = max[i];
31 printf("%d\n",result);
32 if(ncases)
33 printf("\n");
34 }
35 system("pause");
36  return 0;
37 }
posted on 2011-05-07 13:29  void-man  阅读(178)  评论(0)    收藏  举报