程设模拟考 F:怪盗基德的滑翔翼

题目见此:http://cxsjsx.openjudge.cn/2013weekend5a/F/

解题思路:

  1. 简单题,求两次最大下降子序列

贴代码:

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 int h[110], a[110];
 6 
 7 int main()
 8 {
 9     int k, n;
10     cin >> k;
11     while(k--)
12     {
13         cin >> n;
14         for(int i=1 ; i<=n ; i++)
15             cin >> h[i];
16         a[1] = 1;
17         for(int i=2 ; i<=n ; i++)
18         {
19             a[i] = 1;
20             for(int j=1 ; j<i ; j++)
21                 if(h[j] > h[i])
22                     a[i] = max(a[i], a[j]+1);
23         }
24         int res = 0;
25         for(int i=1 ; i<=n ; i++)
26             res = max(res, a[i]);
27 
28         a[n] = 1;
29         for(int i=n-1 ; i>=1 ; i--)
30         {
31             a[i] = 1;
32             for(int j=n ; j>i ; j--)
33                 if(h[j] > h[i])
34                     a[i] = max(a[i], a[j]+1);
35         }
36         for(int i=1 ; i<=n ; i++)
37             res = max(res, a[i]);
38         cout << res << endl;
39     }
40 }
View Code

 

posted on 2013-06-16 15:54  白~  阅读(184)  评论(0编辑  收藏  举报

导航