值中的最大值,所以状态转移方程:
opt[i][j] = max(opt[i-1][j-1]+table(b[i-1],a[j-1]),opt[i][j-1]+table('-',a[j-1]),opt[i-1][j]
+table('-',b[i-1]));
<88 C P 1 P C 1 P
<88
P
1
1
C
P Q
第 行,第 列表示 88 和字符串匹配情况,结果是’R和各个字符的累加:
.)
),# ! !),# ! !#8MM& !
.)
),# ! !),# ! !#8MM& !
),# ! !即为所求结果。
Pku acm 2192 Zipper 动态规划题目总结(九)
这 个 题 目 要 求 判 断 个 字 符 串 能 否 组 成 个 字 符 串 , 例 如 -# 和 # 能 组 成
#-#。我们定义一个布尔类型的二维数组 >&> ! !表示 *# !和 *# !能否
组成 *# !% 或者 表示空字符串,所以初始化时,> ! !表示 *# 的前 个
字符是否和 *# 都匹配。
对于 *##-#0
<88 - #
<88
1
E
3
3
可以证明:当 > ! !> ! !上面一格和 > ! !> ! !左面一
格都为 时,> ! !为 %当 > ! !> ! !上面一格为 且左面字母为
*# ! 时 或 者 当 > ! !> ! ! 左 面 一 格 为 且 上 面 字 母 为 *# ! 时 ,
> ! !为 %这就是状态转移方程为。
核心的 代码:
.> ! !;;*#%-$C#*#%-$C#SS> !
!;;*#%-$C#*#%-$C#
> ! !#
8*
> ! !.8*
Pku acm 3356 AGTC 动态规划题目总结(十)
一个字符串可以插入、删除、改变到另一个字符串,求改变的最小步骤。和最长公共