首页 > 其他 > 详细

最长非连续递减子序列长度&个数

时间:2014-12-24 17:48:15      阅读:308      评论:0      收藏:0      [点我收藏+]

技术分享

技术分享

 

 1 int a[100] = {68, 69, 54, 64, 68, 64, 70, 67, 78, 62, 98, 87};        //主序列;
 2 int n = 1;                                                            //主序列元素个数;
 3 int large = 1;                                                        //最长非连续递减子序列序列长度;
 4 int num = 1;                                                        //最长非连续递减子序列序列数量;
 5 int fun(int i, int n, int cnt)        // i开始下标; n结束下标; cnt已找到递减序列长度;
 6 {
 7     if(i == n)
 8         return 0;
 9 
10     for(int j=i+1; j<=n;j++)
11     {
12         if (a[i] > a[j])
13         {
14             //cnt++;
15             fun(j, n, cnt+1);
16 
17             if (cnt+1 > large)
18             {
19                 large = cnt+1;
20                 num = 1;
21             }
22             else if (cnt+1 == large)
23             {
24                 num++;
25             }
26         }
27     }
28     
29     return 0;
30 }
31 
32 int _tmain(int argc, _TCHAR* argv[])
33 {
34     for (int i=0; i<n; ++i)
35     {
36         fun(i, n-1, 1);
37     }
38 
39     printf("\nlarge: %d \nnum:%d\n", large, num);
40     return 0;
41 }

 

最长非连续递减子序列长度&个数

原文:http://www.cnblogs.com/91Kesson/p/4182765.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!