我坚持我的家庭作业任务,有人帮助,请检索串..从矩阵
这里的任务: 查找字符串的所有可能划分成一些字典中的单词
这里是怎么我试图做到这一点: 我用动态规划理念,以填补矩阵,然后我坚持了如何检索数据从它
-- Task5_2
retrieve :: [[Int]] -> [String] -> Int -> Int -> Int -> [[String]]
retrieve matrix dict i j size
| i >= size || j >= size = []
| index /= 0 = [(dict !! index)]:(retrieve matrix dict (i + sizeOfWord) (i + sizeOfWord) size) ++ retrieve matrix dict i (next matrix i j) size
where index = (matrix !! i !! j) - 1; sizeOfWord = length (dict !! index)
next matrix i j
| j >= (length matrix) = j
| matrix !! i !! j > 0 = j
| otherwise = next matrix i (j + 1)
getPartitionMatrix :: String -> [String] -> [[Int]]
getPartitionMatrix text dict = [[ indiceOfWord (getWord text i j) dict 1 | j <- [1..(length text)]] | i <- [1..(length text)]]
--------------------------
getWord :: String -> Int -> Int -> String
getWord text from to = map fst $ filter (\a -> (snd a) >= from && (snd a) <= to) $ zip text [1..]
indiceOfWord :: String -> [String] -> Int -> Int
indiceOfWord _ [] _ = 0
indiceOfWord word (x:xs) n
| word == x = n
| otherwise = indiceOfWord word xs (n + 1)
-- TESTS
dictionary = ["la", "a", "laa", "l"]
string = "laa"
matr = getPartitionMatrix string dictionary
test = retrieve matr dictionary 0 0 (length string)
你是什么意思的“查找所有可能的字符串分词到某些字典的单词”?你能举一个例子来帮助澄清问题吗? – 2012-03-30 13:07:19
dictionary = [“l”,“la”,“a”],string =“lala”,result = [[“l”,“a”,“l”,“a”], l“,”a“],[”la“,”la“],[”l“,”a“,”la“]。现在清楚了吗? – overwriter 2012-03-30 13:29:26