python创建二元函数 python自定义二元一次函数( 二 )


分析:动态规划法 。通过把中间的比较结果记录下来,从而可以避免字符的重复比较 。:
首先定义二元函数(i , j):表示分别以s1[i],s2[j]结尾的公共子串的长度,显然,f(0, j) = 0 (j = 0),f(i, 0) = 0(i = 0),那么对于f(i +1, j + 1)而言,则有如下两种取值:
(1) f(i + 1, j +1) = 0,当str1[i + 1] != str2[j + 1]时
(2)f(i + 1, j +1) = f(i, j) + 1,当str1[i + 1] == str2[j + 1]时
根据这个公式可以计算出f(i, j)(0= i=len(s1), 0 = j = len(s2),所有的值,从而可以找出最长的子串 。
def getMaxSubStr(str1, str2):
len1 = len(str1)
len2 = len(str2)
sb = ''
maxs = 0# 用来记录最长公共子串的长度
maxI = 0# 用来记录最长公共字串最后一个字符的位置
# 申请新的空间来记录公共字串长度信息
M = [([None] * (len1 + 1)) for i in range(len2 + 1)]
i = 0
while ilen1 + 1:
M[i][0] = 0
i += 1
j = 0
while jlen2 + 1:
M[0][j] = 0
j += 1
# 通过利用递归公式填写新建得二维数组(公共字串得长度信息)
i = 1
while ilen1 + 1:
j = 1
while jlen2 + 1:
if list(str1)[i - 1] == list(str2)[j - 1]:
M[i][j] = M[i - 1][j - 1] + 1
if M[i][j]maxs:
maxs = M[i][j]
maxI = i
else:
M[i][j] = 0
j += 1
i += 1
i = maxI - maxs
while imaxI:
sb = sb + list(str1)[i]
i += 1
return sb
if __name__ == "__main__":
str1 = 'abccade'
str2 = 'dgcadde'
print(getMaxSubStr(str1, str2))
程序运行结果:
cad
python中pow(x,y[,z])函数怎么使用?你的语法有错误 。
内置函数power(x, y[, z])中的x和y是必选参数,z是可选参数;如果使用了参数z,中括号必须去掉,即power(x,y,z) , 其结果是x的y次方再对z求余数,但是这种方式比power(x,y) % z的执行效率要高 。
你可以使用power(2, 4)或者power(2,4,3) 。
power(2,4)=2的4次方=16;
power(2,4,3)=2的4次方再模上3=16 % 3=1 。
【python创建二元函数 python自定义二元一次函数】python创建二元函数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于python自定义二元一次函数、python创建二元函数的信息别忘了在本站进行查找喔 。

推荐阅读