求C++语言的最长不上升子序列代码
  • 板块学术版
  • 楼主Ian_NIE
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/11/27 16:50
  • 上次更新2023/11/27 19:38:25
查看原帖
求C++语言的最长不上升子序列代码
602171
Ian_NIE楼主2023/11/27 16:50

rt

我们都知道,正常的最长不下降子序列是这样的

for(int i = 1; i <= n; i++)
{
    dp[i] = 1;
    for(int j = i - 1; j >= 1; j--)
        if(a[i] <= a[j])
            dp[i] = max(dp[i], dp[j] + 1);
    ans = max(ans, dp[i]);
}

时间复杂度是 O(n2)O(n^2) ,能够解决 n≤5000n \le 5000 的情况。

可是当我们亲爱的教练把数据提到了 n≤200000n \le 200000 时,这种方法就挂了。

所以求 O(nlog⁡n)O(n \log n) 级时间复杂度的C++最长不上升子序列的代码。

最好加上注释。

2023/11/27 16:50
加载中...