Alvin1204 @ 2023-07-29 18:40:40
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[5005];
for(int i=0;i<n;i++)
cin>>a[i];
int f[5005]={1};
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
if(a[i]>a[j]){
f[i]=max(f[j]+1,f[i]);
}
}
}
int ans=0;
for(int i=0;i<n;i++){
ans=max(ans,f[i]);
}
cout<<ans;
return 0;
}
by gf20220934 @ 2023-07-29 19:07:27
依据题意,f数组应该全部赋值为1,而用
int f[5005]={1};
是不行的
可以先定义f数组,再将输入循环改为
for(int i=0;i<n;i++){
cin>>a[i];
f[i]=1;
}
就可以过了
by gf20220934 @ 2023-07-29 19:07:40
@Alvin1204
by Alvin1204 @ 2023-07-29 19:09:06
@gf20220934
懂了,谢谢