szlh_XJS @ 2024-07-14 14:29:37
#include<bits/stdc++.h>
using namespace std;
int n,an;
int nn[5005],t[5005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>nn[i];
}
t[1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(nn[i]>nn[j])
{
t[i]=max(t[i],t[j]+1);
}
}
}
for(int i=1;i<=n;i++)
{
an=max(an,t[i]);
}
cout<<an;
return 0;
}
by hutao_262218926 @ 2024-07-14 14:35:11
#include<bits/stdc++.h>
using namespace std;
int n,an;
int nn[5005],t[5005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>nn[i];
t[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(nn[i]>nn[j])
{
t[i]=max(t[i],t[j]+1);
}
}
}
for(int i=1;i<=n;i++)
{
an=max(an,t[i]);
}
cout<<an;
return 0;
}
t要全部设为1
by szlh_XJS @ 2024-07-14 15:00:42
@hutao_262218926 why
by hutao_262218926 @ 2024-07-14 16:32:01
举个栗子,n=2,nn包含1和2,f[1]=1,f[2]=0, 那f[2]=max(t[i],t[j]+1)=max(1,1)=1,而f[2]应该等于2