我一直在努力解决这个问题。我正在解决Haskell中最长的常见子序列问题,作为一种学习练习。
我有一个函数f1
,它传递了两个Ints i
和j
,以及一个函数f2
。 f1
构建二维列表,以便列表中的(i,j)位置等于f2 i j
。
现在我正在尝试编写一个名为lcs
的函数,该函数需要两个字符串s1
和s2
,并使用f1
找到最长的公共子序列进行记忆。
我不确定如何设置它。有什么想法吗?
代码:
f1 :: Int -> Int -> (Int -> Int -> a) -> [[a]]
f2 :: Int -> Int -> a
lcs:: String -> String -> Int
答案 0 :(得分:4)
我认为Int
的{{1}}参数是某种界限?请记住,使用列表可以获得不需要指定边界(因为懒惰)的好处,但是它会降低访问时间。
此函数应该执行您希望f1
执行的操作(记住给定函数):
f1