本文主要是介绍练习3 - 登山,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int n=0;
int a[101] = {0};
int bf[101];
int cf[101];
int maxx=0;
int main()
{ //输入数据cin >> n;for(int i=1;i<=n;i++){cin >> a[i];}//初始化数据//初始化为1必须用fill() !!!!! fill(bf,bf+n,1);fill(cf,cf+n,1); //左->右 最大不下降子序列 => 正序 for(int i=2;i<=n;i++){for(int j=i-1;j>=1;j--){if(a[i] > a[j] && (bf[i]<bf[j]+1)) bf[i]=bf[j]+1;}}//右->左 最大不下降子序列 => 逆序 for(int i=2;i<=n;i++){for(int j=i-1;j>=1;j--){if(a[i] < a[j] && (cf[i]<cf[j]+1)) cf[i]=cf[j]+1;}}//最终合并比大小 for(int i=1;i<=n;i++){maxx = (bf[i] + cf[i] > maxx) ? bf[i] + cf[i] : maxx;}cout << (maxx-1); //中间商赚差价 => 中间的人多算了1次
}
//186 186 150 200 160 130 197 220
//cout << "输入:"
结果:
这篇关于练习3 - 登山的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!