这次的代码非常简单!
注意是真的非常非常简单!
这是动态规划题型中最长上升子序列的根基代码
我可以说的是,
这!很重要
来,上代码
#include<iostream>
using namespace std;
int dp[1001];//存最大子序列的长度
int arr[1001];//存原始数据
void Lis(int a[], int n){
fill(dp+1,dp+n+1,1);//初始化为1
for(int i = 2;i <=n ;i++){//左到右,检测两个条件
for(int j = 1;j<i;j++){//依次检测1到i-1之间的所有元素是否符合条件
if(a[j] < a[i] && dp[j] ==dp[i]) dp[i]+=1;
}
}
int max_n = 1;
for(int i = 1;i <= n;i++) max_n = max(max_n,dp[i]);//dp中最大值
cout<<max_n<<endl;//输出最大值
return;
}
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i++) cin >> arr[i];
Lis(arr,n);
return 0;
}