Common Subsequence 解説 や、 最長共通部分列問題 (Longest Common Subsequence) - naoyaのはてなダイアリー で紹介されている問題。動的計画法やメモ化で計算量が減らせる例として知られている、とのこと。
(defun lcs-length (l1 l2)
(cond
((or (null l1) (null l2)) 0)
((eq (car l1) (car l2))
(+ (lcs-length (cdr l1) (cdr l2)) 1))
(t
(max
(lcs-length l1 (cdr l2))
(lcs-length (cdr l1) l2)))))
=> lcs-length
(lcs-length '(a b c b d a b) '(b d c a b a))
=> 4
0 件のコメント:
コメントを投稿