文章

37

粉丝

68

获赞

6

访问

6.9k

头像
最大上升子序列LIS
综合
发布于2024年3月22日 13:28
阅读数 177

#include<iostream>
using namespace std;
int dp[10000];
int a[10000];
int n;
//求长度和求和
int LIS_nn()
{
	int ans = 0;
	for (int i = 1;i <= n;++i)
	{
		dp[i] = 1;//dp[i]=a[i];
		for (int j = 1;j < i;j++)
		{
			if(a[j]<a[i])
				dp[i] = max(dp[j] + 1, dp[i]);//dp[i] = max(dp[j] +a[i], dp[i]);
		}
		ans = max(ans, dp[i]);
	}
}
int LIS_nlgn()
{
	int len = 1;
	dp[1] = a[1];
	for (int i = 2;i <= n;++i)
	{
		if (a[i] > dp[len])
			dp[++len] = a[i];
		else
		{
			int pos = lower_bound(dp, dp + len, a[i]) - dp;
			dp[pos] = a[i];
		}
	}
	return len;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发