给出题的人点个赞,好有思想!!!
C++体检问题_最优解
C++体检问题_c++_02
C++体检问题_最优解_03
C++体检问题_c++_04
C++体检问题_i++_05
C++体检问题_开发语言_06
C++体检问题_后端_07
C++体检问题_开发语言_08
C++体检问题_开发语言_09

// Author:PanDaoxi
#include <iostream>
using namespace std;
int a[101],n;
void lis(int a[],int n){
	int dp[101]={};
	fill(dp+1,dp+1+n,1); //从1填充到最后,填充值为1
	//动规核心:完全背包
	for(int i=2;i<=n;i++){
		//因为dp[1]=1,所以从2开始判断
		for(int j=1;j<i;j++){
			if(a[i]>a[j]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1;
		} 
	} 
	//获取最优解
	int l=1;
	for(int i=1;i<=n;i++){
		l=max(l,dp[i]);
	} 
	cout<<l;
}
int main(){ 
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	lis(a,n);
	return 0;
}