提交时间:2023-05-31 18:28:47
运行 ID: 18858
//#include<bits/stdc++.h> //using namespace std; //int main(){ // int n,i,j; // cin>>n>>i>>j; // for(int j1=1;j1<=n;j1++){ // cout<<"("<<i<<","<<j1<<") "; // } // cout<<endl; // for(int i1=1;i1<=n;i1++){ // cout<<"("<<i1<<","<<j<<") "; // } // cout<<endl; // for(int i1=1;i1<=j;i1++){ // cout<<"("<<i1<<","<<i1+1<<") "; // } // cout<<endl; // for(int o=1;o<=n;o++){ // if((i+j)==(x+y)) // cout<<"("<<o<<","<<i+j-o<<") "; // } // return 0; //} #include <bits/std<em>c++</em>.h> using namespace std; const int MAXN = 1010; int a[MAXN],dp[MAXN]; int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); dp[i]=1; //初始化dp数组 } for(int i=1;i<=n;i++){ //i从1到n枚举每个数字 for(int j=1;j<i;j++){//j从1到i-1枚举i之前的每个数字 if(a[j]<=a[i]){//如果前面有小于等于当前的数字,则可以从其转移而来 dp[i]=max(dp[i],dp[j]+1); } } } int ans=0; for(int i=1;i<=n;i++){//找到dp数组中的最大值 ans=max(ans,dp[i]); } printf("%d\n",ans); return 0; }