查找最长有序数列

查找最长有序数列 

9

View Code
 1 /*解题方法
 2      0 1 2 3 4 5 6 7 8
 3 a[i] 1 4 7 2 5 8 3 6 9
 4 c[i] 1 2 3 2 3 4 3 4 5
 5 */
 6 #include<stdio.h>
 7 int main()
 8 {
 9     int a[1000],b[1000],c[1000],i,j,k,n,x,max1,max2;
10     while(scanf("%d",&n),n!=0)
11     {
12         for(i=0;i<n;i++)
13         {
14             scanf("%d",&a[i]);
15         }
16         b[0]=1;c[0]=1;
17         for(i=1;i<n;i++)
18         { k=1;
19             for(j=0;j<i;j++)
20             {
21                 if(a[i]>a[j])
22                 {
23                     b[k++]=c[j]+1;//记下比a[i]小的数的最长有序数列加1
24                 }
25             }
26                 max1=b[0];
27                 for(x=0;x<k;x++)
28                 {
29                     if(max1<b[x])//查找最大的最长有序数列
30                         max1=b[x];
31                 }
32                 c[i]=max1;//将最大的最长有序数列赋给c[i]
33         }
34         for(i=0;i<n;i++)
35         {
36             if(max2<c[i])//找出最长的有序数列
37                 max2=c[i];
38         }
39         printf("%d\n",max2);
40     }
41     return 0;
42 }

 

1 4 7 2 5 8 3 6 9

5

posted @ 2012-07-04 11:18  zlyblog  阅读(261)  评论(0编辑  收藏  举报