zoukankan      html  css  js  c++  java
  • LeetCode 516. Longest Palindromic Subsequence详细图文解析

    问题描述

    https://leetcode.com/problems/longest-palindromic-subsequence/description/ 

    一个例子:

    令数组为a,画一个行列为a长度的矩阵,令为T

    首先看长度等于1的情况:

    也就是只看一个元素,比如只看a[0]这个元素,也就是一个a,显然最长回文序列是1。只看a[1],即g,显然最长回文序列为1。其实也就是

    T[i][j] (i==j)的元素位置全置为1。

    看长度为2的情况:

    先看a[0~1],也就是a,g。

    • 先看a和g是否相等,相等则在各自长度为1的情况下的最长回文序列的前提上加2,
    • 否则划分成子问题,看成长度为1的a,和长度为1的g,之前得出的矩阵中(T[0][0]和T[1][1])可以看出分别为1 ,1.
    • 条件2符合,因此取T[0][0]和T[1][1]中较大值,即1

    由以上两个考虑得出a,g最长回文序列为T[0][1]=1.

    在看a[1~2],也就是g,b。

    • 先看g和b是否相等,相等则在各自长度为1的情况下的最长回文序列的前提上加2,
    • 否则划分成子问题,看成长度为1的g,和长度为1的b,之前得出的矩阵中(T[1,1]和T[2][2])可以看出分别为1 ,1.
    • 条件2符合,因此取T[0][0]和T[1][1]中较大值,即1

    ......

    看长度为3的情况:

    先看a[0~2],也就是a g b。

    • 先看a和b是否相等,相等则在各自长度为2的情况下的最长回文序列的前提上加2,
    • 否则划分成子问题,看成长度为2的a g(T[0][1]=1),和长度为2的g b,(其T[1][2]=1),之前得出的矩阵中(T[0][1]和T[1][2])可以看出分别为1 ,1.
    • 条件2符合,因此取T[0][0]和T[1][1]中较大值,即1

     在看a[1~3],需要填充的是T[1][3]的值,也就是g b d。

    • 先看g和b是否相等,相等则在各自长度为2的情况下的最长回文序列的前提上加2,
    • 否则划分成子问题,看成长度为2的g b(T[1][2]=1),和长度为2的g b,(其T[2][3]=1),之前得出的矩阵中(T[1][2]]和T[2][3])可以看出分别为1 ,1.
    • 条件2符合,因此取T[0][0]和T[1][1]中较大值,即T[1][3]=1

    再看a[2~4],需要填充的是T[2][4]的值,也就是b d b。

    • 先看b和b是否相等,相等则在各自长度为2的情况下的最长回文序列的前提上加2,
    • 否则划分成子问题,看成长度为2的b d(T[2][3]=1),和长度为2的d b,(其T[3][4]=1),之前得出的矩阵中(T[1][2]]和T[2][3])可以看出分别为1 ,1.
    • 条件1是符合的,因此取T[i+1][j-1]的值(也就是T[3][3])+2,即T[2][4]=3

    看一下图示:

    重复上述步骤即可

    上述步骤用代码描述如下:

    结果图:

     如果要输出回文序列,则可以看这样的箭头指,由那个指向线,可以看出:

    从0 5 (T[0][5])开始 即 a a。

    然后左下角的3是从正下方的3来的,即 2  4(T[2][4])来的  即a b b a。

    然后3又是从1来的,即3 3 (T[3][3])也就是 d。

    得到最长回文序列如下。

    a b d b a

    参考:

    https://blog.csdn.net/xiaocong1990/article/details/54976319

    https://www.youtube.com/watch?v=_nCsPn7_OgI&list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr&index=9

  • 相关阅读:
    安卓上的蓝牙数据传输
    算法题 整理--- 不定时更新
    Scrapy 框架的安装以及常用指令
    Flask 基础
    HTTP 请求包含: (请求行,请求头,请求体)
    Python 字符串,列表,字典,集合的常用方法
    Vue+Django 登录测试
    用view视图不含序列化写图书管理系统
    解决hao123恶意捆绑浏览器问题
    不同试图实现增删改查操作
  • 原文地址:https://www.cnblogs.com/volvane/p/9287623.html
Copyright © 2011-2022 走看看