程设模拟考 F:怪盗基德的滑翔翼
题目见此:http://cxsjsx.openjudge.cn/2013weekend5a/F/
解题思路:
- 简单题,求两次最大下降子序列
贴代码:
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 }