#刷题交流#
第二十五天,小R的随机播放顺序
定义状态:我们使用一个二维数组 f,其中 f[i][j] 表示将 dna1 的前 i 个字符转换成 dna2 的前 j 个字符所需的最少编辑步骤。
初始化:如果其中一个序列的长度为0,那么编辑步骤的数量就是另一个序列的长度。因此,f[i][0] = i 和 f[0][j] = j。
状态转移:对于每个字符 dna1[i-1] 和 dna2[j-1],我们有三种选择:
删除 dna1[i-1],则 f[i][j] = f[i-1][j] + 1
插入 dna2[j-1],则 f[i][j] = f[i][j-1] + 1
替换 dna1[i-1] 为 dna2[j-1],如果它们不相等,则 f[i][j] = f[i-1][j-1] + 1,否则 f[i][j] = f[i-1][j-1]
最终结果:f[n][m] 就是将 dna1 转换成 dna2 所需的最少编辑步骤,其中 n 和 m 分别是 dna1 和 dna2 的长度。
展开
评论