最常见的子序列(Haskell)

时间:2011-09-30 21:12:47

标签: haskell

我一直在努力解决这个问题。我正在解决Haskell中最长的常见子序列问题,作为一种学习练习。

我有一个函数f1,它传递了两个Ints ij,以及一个函数f2f1构建二维列表,以便列表中的(i,j)位置等于f2 i j

现在我正在尝试编写一个名为lcs的函数,该函数需要两个字符串s1s2,并使用f1找到最长的公共子序列进行记忆。

我不确定如何设置它。有什么想法吗?

代码:

f1 :: Int -> Int -> (Int -> Int -> a) -> [[a]]

f2 :: Int -> Int -> a

lcs:: String -> String -> Int

1 个答案:

答案 0 :(得分:4)

我认为Int的{​​{1}}参数是某种界限?请记住,使用列表可以获得不需要指定边界(因为懒惰)的好处,但是它会降低访问时间。

此函数应该执行您希望f1执行的操作(记住给定函数):

f1