【发布时间】:2018-12-09 22:36:17
【问题描述】:
我尝试使用Scheme来实现LCS算法,但是有一个bug。
(定义 X (列表#\A#\B#\C#\B#\D#\A#\B))
(定义 Y (列表#\B#\D#\C#\A#\B#\A))
(定义前缀 (λ (i s) (如果(= 我 0) '() (缺点(汽车) (前缀(-i 1) (cdr s)))))))
(定义(选择 ith s) (如果(= 第 1 个) (汽车) (选择( - ith 1) (cdr s))))
(定义 (LCS x y) (定义(最优 i j) (条件 ((或 (= i 0) (= j 0)) 0) ((eq?(选择 i x) (选择 j y)) (+ 1 (最佳 (- i 1) (- j 1)))) (否则(最大(LCS(前缀(-i 1)x)y) (LCS x (前缀 (- j 1) y)))))) (最佳(长度 x) (长度 y)))
1 ]=>(加载“lcs.scm”)
;加载“lcs.scm”...完成 ;值:lcs
1 ]=> (lcs X Y)
;值:5
结果应该是4,不知道bug在哪里。
【问题讨论】:
-
把它分成更小的部分。检查每个部分是否正常工作。