首页 > 其他分享 >【DP】编辑距离

【DP】编辑距离

时间:2024-04-30 11:58:59浏览次数:27  
标签:转换 DP 距离 编辑 word1 dp word2 步数 个字符

https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-interview-150

非常难的一种考虑方式

【转载】dp[i][j] 代表将 word1 的前 i 个字符转换为 word2 的前 j 个字符所需的最少步数。
因此,根据题目给出的状态转移方程:
当 word1[i] == word2[j] 时,不需要进行操作,dp[i][j] = dp[i-1][j-1];
当 word1[i] != word2[j] 时,需要进行替换、删除或插入操作,选择其中步数最小的操作数进行转换,即:
dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1
其中,dp[i-1][j-1] 表示替换操作,将 word1 的第 i 个字符替换为 word2 的第 j 个字符;
dp[i-1][j] 表示删除操作,将 word1 的第 i 个字符删除;
dp[i][j-1] 表示插入操作,将 word2 的第 j 个字符插入到 word1 的第 i 个字符之前。
举个例子来说明,假设 word1 为 "horse",word2 为 "ros"。我们要求 dp[5][3],即将 word1 的前 5 个字符转换为 word2 的前 3 个字符。
(1) dp[i-1][j-1]:先将 word1 的前 4 个字符 "hors" 转换为 word2 的前 2 个字符 "ro",然后将第五个字符 word1[4](下标从 0 开始)由 'e' 替换为 's'(即替换为 word2 的第三个字符,word2[2])。
(2) dp[i][j-1]:先将 word1 的前 5 个字符 "horse" 转换为 word2 的前 2 个字符 "ro",然后在末尾补充一个 's',即插入操作。
(3) dp[i-1][j]:先将 word1 的前 4 个字符 "hors" 转换为 word2 的前 3 个字符 "ros",然后删除 word1 的第 5 个字符。
以上三种操作中,选择步数最小的操作数进行转换,并加上当前操作的步数(即 +1),即可得到 dp[5][3] 的最小步数。

标签:转换,DP,距离,编辑,word1,dp,word2,步数,个字符
From: https://www.cnblogs.com/peterzh/p/18167752

相关文章

  • Rockchip RK3399 - DRM eDP调试
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2023.04linux:6.3----------------------------------......
  • 编辑
    !/usr/bin/envpythoncoding:utf-8In[63]:importpandasaspdimportnumpyasnpimportpymysqlconn=pymysql.connect(host="10.101.2.32",user="chenqianguang",passwd="select20",db='clx_loan')sql='''&#......
  • SQL Server实战三:数据库表完整性约束及索引、视图的创建、编辑与删除
      本文介绍基于MicrosoftSQLServer软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。目录1交互式为数据库表S创建PRIMARYKEY约束2交互式创建数据库表TEST_SC,创建PRIMARYKEY约束3T-SQL创建数据库表T的PRIMARYKEY约束4T-SQL创建数据库表TEST_C,以......
  • 8.Java异常(后续将添加编辑)
    异常最全最详细的Java异常处理机制异常处理机制抛出异常捕获异常处理异常关键字:try,catch,finally,throw,throws;packagecom.exception;publicclassText{publicstaticvoidmain(String[]args){inta=1;intb=0;try{......
  • BZOJ5424 烧桥计划(单调队列优化dp)
    传送门(vjudge)解题思路注意到\(a_i\)的范围很小,是1000~2000之间,于是我们可以直观感受到k一定不会特别大,推一下可以得出k最多大概在四五百左右,于是可以直接考虑dp[i][j]为前i个数里面选了j个分割点,且第i个数是分割点的最小代价。转移要分两种情况讨论:sum[pre+1~i......
  • oracle数据导入导出,备份还原命令expdp&impdp(只导出元数据,不导出表数据,最全,最完善的步
    感谢金龙鱼先生分享,原文来自https://blog.csdn.net/kou869929526/article/details/125791113一,编码要求以及数据库版本要求检查数据库版本(用于决定导出时生成为哪个版本的dmp头文件)selectversionfromv$instance;检查字符集是否一致(字符集不一致,不能导入)selectuserenv(......
  • Surface Pro 4 miniDP转接HDMI 4K显示的问题
    1、我在某东上买了一个支持4k的minidp转hdmi的转接头,可以支持2K显示器。不过直接连接的话2K显示器最高只能设置1080P的分辨率。解决方法:可以先单独让2k显示器显示,设置分辨率为2k,然后再扩展显示,就可以完美使用了,希望有帮助。2、SurfacePro4及其扩展坞上的MiniDisplayPort能否......
  • hdp2.4 -- hbase集群replication
    liststatuslist_namespace list_peers,list_replicated_tables主节点create'replication_test','f1','f2'1hbase(main):011:0>put'replication_test','rk0001','f1:name','zhanzongxin1'......
  • hdp2.4搭建
    http://192.168.159.11/hbase/虚拟机目录/var/www/html/hbase启动httpd  /bin/systemctlstarthttpd.service  httpd配置文件修改下面三行路径   vi/etc/httpd/conf/httpd.confDocumentRoot"/data/www/html"<Directory"/data/www"><Directory"/d......
  • P5896 [IOI2016] aliens (斜率优化 dp+wqs 二分)
    我们可以把所有点都对称到主对角线下方。然后每个点如果想被覆盖都会有一个最小的三角形,我们可以贪心的只留必须选的点。如果把剩下的点按\(x\)坐标升序排序,可以发现他们的\(y\)坐标也是升序排序的。记剩余点个数为\(n\),显然每个点都选自己的最小三角形最好。但是有可能\(......