一道例题:

CF10D LCIS

求最长公共上升子序列的题。算是比较基础和经典的DP题目。

但是这道题目为什么是蓝了呢。。。可能就是因为它还需要维护一个序列的记录。

怎么维护呢?

我们开一个\(pre\)数组,表示当前状态的前一个位置是什么。即当前状态是由哪个状态新转移过来的。这样的话,我们只需要记录终止点pos,其前一个位置就是\(pre[pos]\),前一个就是\(pre[pre[pos]]\)。再前一个就是...(禁止套娃)

即记录出了整个路径。

最后的输出过程可以采用递归输出,但是没什么必要,一个while循环即可。

我们发现很多递归的东西其实都可以转成while循环,也就是非递归的形式。因为其本质是差不多一样的。while后面的条件就相当于函数的参数和递归出口。

讲完了。

相关文章:

  • 2022-12-23
  • 2021-08-04
  • 2021-07-30
  • 2021-06-10
  • 2021-10-14
  • 2021-04-19
  • 2021-08-24
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-19
  • 2021-06-14
  • 2021-09-07
  • 2021-12-20
  • 2021-12-09
  • 2022-12-23
相关资源
相似解决方案