zhujiajun2013 @ 2024-01-20 07:51:23
#include<bits/stdc++.h>
using namespace std;
int n,a[5005],dp[5005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=2;i<=n;i++)
{
for(int j=i-1;j>=1;j--)
{
if(a[i]>a[j])
{
dp[i]=max(dp[i],dp[j]+1);
}
}if(dp[i]==0)dp[i]=1;
}
int maxn=0;
for(int i=1;i<=n;i++)maxn=max(maxn,dp[i]);
cout<<maxn;
return 0;
}
by zhujiajun2013 @ 2024-01-20 07:57:04
评测记录
by sbno333 @ 2024-01-20 08:13:56
循环和输入中间加一句dp[1]=1
就过了,以后初始化要注意严谨,而且建议先自己调。
by zhujiajun2013 @ 2024-01-21 07:53:00
谢谢?
by lrb20120825 @ 2024-01-25 10:58:09
@SBAAAA0 ```c
using namespace std;
const int maxn=12e5;
int n,ans,a[maxn],f[maxn];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
f[i]=1;
for(int j=1;j<i;j++)
{
if(a[j]<a[i])
f[i]=max(f[i],f[j]+1);
}
}
for(int i=1;i<=n;i++)ans=max(ans,f[i]);
cout<<ans;
}
by zhujiajun2013 @ 2024-01-25 16:40:12
@lrb20120825 已经过了谢谢