题目大意:
http://codevs.cn/problem/1044/
第一问题就是求序列的最长递减数列的长度,第二问就是求数列的最长递增序列的长度。
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <iostream> using namespace std; int arr[30] = {0}; int dp[30] = {0}; int mp[30] = {0}; int main() { int n,count = 1,ans1 =0,ans2 = 0; while(cin >> n) { arr[count] = n; count++; } count--; dp[0] = 0; mp[0] = 0; for(int i = 1; i <= count; i++) { for(int j = i; j >= 1; j--) { if(arr[i] <= arr[j]) ans1 = max(ans1,dp[i] = max(dp[j]+1,dp[i])); } } cout << ans1 << endl; for(int i = 1; i <= count; i++) { for(int j = 0; j < i; j++) { if(arr[i] > arr[j]) ans2 = max(ans2,mp[i] = max(mp[i],mp[j]+1)); } } cout << ans2; return 0; }