再谈动态规划

作者: 橙小汁 | 来源:发表于2019-11-02 12:49 被阅读0次
index-picture

1.最长公共子序列

  • 问题情景
    假设你管理着网站dictionary.com。用户在该网站输入单词时,你需要给出其定义。
    但如果用户拼错了,你必须猜测他原本要输入的是什么单词。例如,假设Alex不小心输入了fosh。那怎么知道他原本想输入的是fort还是fish呢?

  • 解答
    如果用最长公共子串,两个单词的最长公共子串长度都为2,所以改用最长公共子序列

网格图(图片来源《算法图解》)

最终判断想要输入的是fish这个单词!

  • Python3实现代码

    def LCS(string1,string2):
          len1 = len(string1)
          len2 = len(string2)
          res = [[0 for i in range(len1+1)] for j in range(len2+1)] # 创建一个二维数组,赋初始值为0
    
          # i为行,j为列
          for i in range(1,len2+1):
              for j in range(1,len1+1):
                  if string2[i-1] == string1[j-1]:
                      res[i][j] = res[i-1][j-1]+1
                  else:
                      res[i][j] = max(res[i-1][j],res[i][j-1])
           return res,res[-1][-1]
    

2.最长公共子串

  • 问题情景
    求fish和hish的最长公共子串

  • 解答

    网格图(图片来源《算法图解》)
  • python3代码

      def LCString(string1,string2):
          len1 = len(string1)
          len2 = len(string2)
          res = [[0 for i in range(len1+1)] for j in range(len2+1)] # 创建一个二维数组,赋初始值为0
          result = 0 # 存储当前最长子串的长度
    
          # i为行,j为列
          for i in range(1,len2+1):
              for j in range(1,len1+1):
                  if string2[i-1] == string1[j-1]:
                      res[i][j] = res[i-1][j-1]+1
                      result = max(result, res[i][j])            
           return result
    

相关文章

  • 再谈动态规划

    1.最长公共子序列 问题情景:假设你管理着网站dictionary.com。用户在该网站输入单词时,你需要给出其定...

  • Algorithm进阶计划 -- 动态规划(上)

    动态规划动态规划的基本原理动态规划的运用 1. 动态规划的基本原理 动态规划(Dynamic Programmi...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

  • 动态规划 Dynamic Programming

    从运筹学和算法的角度综合介绍动态规划 算法分类总结动态规划与静态规划的关系浅析静态规划和动态规划动态规划解非线性规...

  • 《数据结构与算法之美》27——初识动态规划

    前言 今天开始学习动态规划,一共有三节,分别是:初识动态规划、动态规划理论、动态规划实战。今天这一节就是初识动态规...

  • 算法3:动态规划

    5.动态规划5.1 什么是动态规划?5.2 自底向上的动态规划:5.3 自顶向下的动态规划5.4 0-1背包问题:...

  • 动态规划

    动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...

  • Dynamic Programming(动态规划)类算法分析随笔

    #动态规划 关于动态规划,先摘一段[wiki][1]的描述: ``` 动态规划(英语:Dynamic progra...

  • 什么是动态规划

    目录 动态规划解决了什么 什么是动态规划 典型的动态规划 1. 动态规划解决了什么 的思想就是将大问题拆分成小问题...

  • 斐波那契数列

    递归解法 动态规划解法1 动态规划解法2

网友评论

    本文标题:再谈动态规划

    本文链接:https://www.haomeiwen.com/subject/faycbctx.html