求助求最长上升子序列的方法
  • 板块学术版
  • 楼主kong_xin_qi
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/9/8 21:35
  • 上次更新2023/11/4 07:15:31
查看原帖
求助求最长上升子序列的方法
239243
kong_xin_qi楼主2021/9/8 21:35

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,求大佬解释原因

我感觉两种方法只是顺推逆推的区别,在理论上都可行啊

2021/9/8 21:35
加载中...