关于LIS代码的不理解之处
查看原帖
关于LIS代码的不理解之处
606191
GeXXGe楼主2023/10/9 23:25

大佬求问

就是一个普通的最长上升子序列,用dp做,第17行

f[i]=i;

非常不理解,为什么要把所有的dp数组都初始化为1?

初始化为0就40分???

这里0和1有区别吗?

#include <iostream>
#include <cstdio>
using namespace std;
int a[5050];
int f[5050];//f[i]为以i结尾的最长上升子序列长度
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	int x=1;
	for(int i=1;i<=n;i++)
	{
		f[i]=1;
		for(int j=1;j<i;j++)
		{
			if(a[i]>a[j])
			{
				f[i]=max(f[j]+1,f[i]);
			}
		}
		x=max(x,f[i]);
	}
	cout<<x<<endl;
	return 0;
}
2023/10/9 23:25
加载中...