标签:return 算法 style 整数 else 题目 color min .com
给定两个字符串str1和str2,再给定三个整数ic,dc,rc,分别代表插入、删除、替换一个字符的代价,返回将str1编辑成str2的最小代价。
举例:
str1="abc" str2="adc" ic=5 dc=3 rc=2,从"abc"编辑到"adc"把b替换成d代价最小,为2;
str1="abc" str2="adc" ic=5 dc=3 rc=10,从"abc"编辑到"adc",先删除b再插入d代价最小,为8;
动态规划表:dp[i][j]表示str1[0......i-1]编辑成str2[0......j-1]的最小编辑代价,dp大小为(M+1)*(N+1)是为了从空串开始计算,即dp[0][0]表示空串编辑到空串的最小编辑代价。
dp[0][0] = 0
dp[0][j] = j * len(s2)
dp[i][0] = i * len(s1)
def mincost(s1,s2,ic,dc,rc): m , n = len(s1) , len(s2) if not s1: return n*ic if not s2: return m*dc dp = [[0] * (n+1) for i in range(m+1)] for i in range(1,n + 1): dp[0][i] = ic * i for j in range(1,m + 1): dp[j][0] = dc * j for i in range(1,m+1): for j in range(1,n+1): if s1[i-1] == s2[j-1]: dp[i][j] = dp[i-1][j-1] else: dp[i][j] = dp[i-1][j-1] + rc dp[i][j] = min( dp[i][j] , dp[i-1][j] + dc , dp[i][j-1] + ic) return dp[-1][-1] s1 = ‘ab12cd3‘ s2 = ‘abcdf‘ ic , dc , rc = 5,3,2 mincost(s1,s2,ic,dc,rc)
标签:return 算法 style 整数 else 题目 color min .com
原文地址:https://www.cnblogs.com/Lee-yl/p/9977822.html