rt,这是第一种求的方法
for(int i=1;i<=n;i++)
{
f[i]=1;
for(int j=1;j<=i-1;j++)
if(b[j][1]<b[i][1]&&f[j]+1>f[i])
f[i]=f[j]+1;
cout<<f[n]<<endl;
这是第二种方法
for(int i=n-1;i>=1;i--)
{
l=0, k=0;
for(int j=i+1;j<=n;j++)
if(b[j][1]>b[i][1]&&b[j][2]>l)
l=b[j][2];
if(l>0)
b[i][2]=l+1;
}
k=1;
for(int j=1;j<=n;j++)
if(b[j][2]>b[k][2])
k=j;
cout<<b[k][2]<<endl;
第一种会WA,第二种就可以AC,求大佬解释原因
我感觉两种方法只是顺推逆推的区别,在理论上都可行啊