Реализации алгоритмов/Наибольшая общая подпоследовательность: различия между версиями

Содержимое удалено Содержимое добавлено
→‎К переименованию: Использован шаблон.
Строка 1:
{{К переименованию | 2014-05-02 | Реализации алгоритмов/Наибольшая общая подпоследовательность}}
 
{{wikipedia|Наибольшая общая подпоследовательность}}
 
Строка 93 ⟶ 95 :
import Data.Function
import Data.List
 
yoba listY listX = reverse $ arr ! (lenY, lenX)
 
where lenY = length listY
lenX = length listX
 
arrY = listArray (1, lenY) listY
arrX = listArray (1, lenX) listX
 
arr = listArray ((0, 0), (lenY, lenX)) [value y x | y <- [0 .. lenY], x <- [0 .. lenX]]
 
value y x | y == 0 || x == 0 = []
| arrY ! y == arrX ! x = (arrY ! y :) $ arr ! (pred y, pred x)
| otherwise = maximumBy (compare `on` length) [arr ! (y, pred x), arr ! (pred y, x)]
 
 
main = print $ yoba "aaaaabbbb34354354345" "abbb34aaabbbb"
</source>