当前位置: 首页 > news >正文

网站建设中幻灯片如何加链接电商运营工资大概多少

网站建设中幻灯片如何加链接,电商运营工资大概多少,网站建设 好的公司,网站源代码 phpPython解决“DNA序列编辑距离”问题 问题描述测试样例法1解题思路代码关键步骤解释 法2解题思路代码 问题描述 小R正在研究DNA序列,他需要一个函数来计算将一个受损DNA序列(dna1)转换成一个未受损序列(dna2)所需的最少…

Python解决“DNA序列编辑距离”问题

  • 问题描述
  • 测试样例
  • 法1
    • 解题思路
    • 代码
    • 关键步骤解释
  • 法2
    • 解题思路
    • 代码

问题描述

小R正在研究DNA序列,他需要一个函数来计算将一个受损DNA序列(dna1)转换成一个未受损序列(dna2)所需的最少编辑步骤。编辑步骤包括:增加一个碱基、删除一个碱基或替换一个碱基。

测试样例

样例1:
输入:dna1 = “AGT”,dna2 = “AGCT”
输出:1

样例2:
输入:dna1 = “AACCGGTT”,dna2 = “AACCTTGG”
输出:4

样例3:
输入:dna1 = “ACGT”,dna2 = “TGC”
输出:3

样例4:
输入:dna1 = “A”,dna2 = “T”
输出:1

样例5:
输入:dna1 = “GGGG”,dna2 = “TTTT”
输出:4

法1

我们需要计算将一个DNA序列 dna1 转换成另一个DNA序列 dna2 所需的最少编辑步骤。编辑步骤包括增加、删除或替换一个碱基。

解题思路

  1. 动态规划:我们可以使用动态规划来解决这个问题。定义一个二维数组 dp,其中 dp[i][j] 表示将 dna1 的前 i 个字符转换成 dna2 的前 j 个字符所需的最少编辑步骤。

  2. 初始化

    • dp[0][j] 表示将空字符串转换成 dna2 的前 j 个字符,需要 j 次增加操作。
    • dp[i][0] 表示将 dna1 的前 i 个字符转换成空字符串,需要 i 次删除操作。
  3. 状态转移

    • 如果 dna1[i-1] == dna2[j-1],则 dp[i][j] = dp[i-1][j-1],因为不需要任何编辑操作。
    • 否则,dp[i][j] 可以通过以下三种操作之一得到:
      • 增加:dp[i][j-1] + 1
      • 删除:dp[i-1][j] + 1
      • 替换:dp[i-1][j-1] + 1
    • 取这三种操作的最小值作为 dp[i][j]

代码

def solution(dna1, dna2):# 获取两个DNA序列的长度m, n = len(dna1), len(dna2)# 创建一个 (m+1) x (n+1) 的二维数组 dpdp = [[0] * (n + 1) for _ in range(m + 1)]# 初始化 dp 数组的第一行和第一列for i in range(m + 1):dp[i][0] = ifor j in range(n + 1):dp[0][j] = j# 填充 dp 数组for i in range(1, m + 1):for j in range(1, n + 1):if dna1[i - 1] == dna2[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1# 返回最终结果return dp[m][n]if __name__ == "__main__":# 你可以添加更多测试用例print(solution("AGCTTAGC", "AGCTAGCT") == 2)print(solution("AGCCGAGC", "GCTAGCT") == 4)

关键步骤解释

  1. 初始化dp[i][0]dp[0][j] 分别表示将 dna1 的前 i 个字符转换成空字符串,以及将空字符串转换成 dna2 的前 j 个字符。
  2. 状态转移:根据 dna1[i-1]dna2[j-1] 是否相等,选择不同的编辑操作,并取最小值。

法2

综合运用了动态规划(Dynamic Programming)和字符串处理的知识,是一道典型的编辑距离(Edit Distance)问题。题目要求计算将一个受损DNA序列(dna1)转换成一个未受损序列(dna2)所需的最少编辑步骤。编辑步骤包括增加一个碱基、删除一个碱基或替换一个碱基。这是一个典型的编辑距离问题,可以通过动态规划来解决。动态规划的核心思想是将问题分解为子问题,并通过状态转移方程逐步求解。

解题思路

  1. 初始化

    • 创建一个二维数组 f,大小为 (n+1) x (m+1),其中 nm 分别是 dna1dna2 的长度。f[i][j] 表示将 dna1 的前 i 个字符转换为 dna2 的前 j 个字符所需的最少编辑步骤。
    • 初始化边界条件:f[i][0] = i 表示将 dna1 的前 i 个字符转换为空字符串需要 i 次删除操作;f[0][j] = j 表示将空字符串转换为 dna2 的前 j 个字符需要 j 次插入操作。
  2. 状态转移

    • 对于每个 ij,计算 f[i][j]
      • 如果 dna1[i-1] == dna2[j-1],则不需要进行替换操作,f[i][j] = f[i-1][j-1]
      • 否则,f[i][j] = min(f[i-1][j] + 1, f[i][j-1] + 1, f[i-1][j-1] + 1),分别对应删除、插入和替换操作。
  3. 结果

    • 最终结果为 f[n][m],即 dna1 转换为 dna2 所需的最少编辑步骤。
  • 时间复杂度 O ( n × m ) O(n \times m) O(n×m),其中 nm 分别是 dna1dna2 的长度。需要填充一个 (n+1) x (m+1) 的二维数组。
  • 空间复杂度 O ( n × m ) O(n \times m) O(n×m),用于存储动态规划表 f

代码

def solution(dna1: str, dna2: str) -> int:n = len(dna1)m = len(dna2)if n * m == 0:return n + mf = [[0] * (m + 1) for _ in range(n + 1)]for i in range(n + 1):f[i][0] = ifor j in range(m + 1):f[0][j] = jfor i in range(1, n + 1):for j in range(1, m + 1):f[i][j] = min(f[i - 1][j] + 1, f[i][j - 1] + 1, f[i - 1][j - 1] + (dna1[i - 1] != dna2[j - 1]))return f[n][m]if __name__ == '__main__':print(solution(dna1 = "AGT",dna2 = "AGCT") == 1)print(solution(dna1 = "AACCGGTT",dna2 = "AACCTTGG") == 4)print(solution(dna1 = "ACGT",dna2 = "TGC") == 3)print(solution(dna1 = "A",dna2 = "T") == 1)print(solution(dna1 = "GGGG",dna2 = "TTTT") == 4)
http://www.cadmedia.cn/news/10627.html

相关文章:

  • 建立反洗钱内部控制机制的基本原则seo优化排名公司
  • 几项措施政府网站集约化建设软文通
  • 关于认真做好门户为网站建设网站seo优化运营
  • 网站建设一年能收入多少钱seo优化关键词放多少合适
  • crm客户管理软件平台长沙优化网站
  • 重庆市建设工程施工安全管理总站优化新十条
  • 网站建设与网页设计作业seo有哪些优化工具
  • 浙江建设三类人员证书查询成都优化网站哪家公司好
  • 海东网站建设公司北京seoqq群
  • 网页设计包含的内容网站优化师
  • 建立网站还是建设网站想做电商怎么入手
  • 知名的网站建设百度seo软件
  • 三屏网站建设seo在线优化技术
  • 政府网站内容建设 投标重庆排名seo公司
  • 苏州营销网站建设公司排名培训机构营业执照如何办理
  • 聊城专业网站开发公司seo推广优化公司哪家好
  • 北京网站建设升上去济南专业做网站
  • 做网站建设的怎么赢利搜索引擎优化的常用方法
  • 阳江房产网签查询seo网站推广如何做
  • 中恒建设职业技术培训学校网站推广怎么推
  • 荥阳市建设局 网站安卓优化大师老版本下载
  • 政务网站建设的功能模块东莞百度快速优化排名
  • 芗城网站建设苏州seo网站管理
  • 网站开发的公司排名如何优化搜索引擎的搜索功能
  • 装饰设计培训网络seo推广
  • 学校网站 建设措施百度推广电话销售好做吗
  • 建设银行网站无法打开seo技术网
  • wordpress数据连接信息百度网站优化软件
  • 备案期间关闭网站排名优化seo公司
  • 安徽网站建设维护百度站长快速收录