Реализации алгоритмов/Наибольшая общая подпоследовательность: различия между версиями
Содержимое удалено Содержимое добавлено
JenVan (обсуждение | вклад) м →C++ |
→К переименованию: Использован шаблон. |
||
Строка 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>
|