在尝试编写Scheme中最长的公共子列表问题的解决方案时,我很难弄清楚到目前为止我有什么问题。我认为这是正确的想法,在担心多项式时间之前,我只是试图找到一个可以工作的人。我之前没有写过功能语言,句法上的差异可能会让事情变得更加困难。最长的公共子列表
(define (lcs lst1 lst2)
(if (or (null? lst1) (null? lst2)) '()
(if (not (null? lcs)) lcs
(if (equal? (car lst1) (car lst2))
(cons (car lst1))(lcs (cdr lst1) (cdr lst2)))
(let ((a (lcs (cdr lst1) lst2))
(b (lcs lst1 (cdr lst2))))
(if (> (cadr a) (cadr b)) a b)))))
这是正确的轨道吗?它出什么问题了? 任何帮助表示赞赏,谢谢。
什么是'lcs_fast'? – perimosocordiae 2010-11-07 21:07:58
一个错字,我让他们所有人都开始打电话,然后把它改成只是lcs。 – zalberico 2010-11-07 21:14:52