C++体检问题

给出题的人点个赞,好有思想!!!
C++体检问题_第1张图片
C++体检问题_第2张图片
C++体检问题_第3张图片
C++体检问题_第4张图片
C++体检问题_第5张图片
C++体检问题_第6张图片
C++体检问题_第7张图片
C++体检问题_第8张图片
C++体检问题_第9张图片

// Author:PanDaoxi
#include 
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;
}
 

你可能感兴趣的:(C++,c++,开发语言,后端)