查找具有指定总和的子列表

Ros*_*g X 1 haskell list

我正在Haskell中处理一个函数,它接收Ints和Int的列表.

sublistSum :: [Ints] -> Int -> [[Ints]]
Run Code Online (Sandbox Code Playgroud)

它返回的是一个子列表,其中包含原始列表中与Int相加的数字列表.

例如:

sublistSums [1, 5, -2, 4, 3, 2] 2
[[1,-2,3],[-2,4],[2]]
Run Code Online (Sandbox Code Playgroud)

我的工作:

sublistSums [] num = []
sublistSums (x:xs) num  
    | findSum x xs num == num = findSum x xs num 0 : sublistSums (x:xs) num
    | otherwise = sublistSums xs num

findSum x [] num count = []
findSum x (y:ys) num count
    | ...
Run Code Online (Sandbox Code Playgroud)

所以findSum我做的辅助函数应该返回这样的数字列表(加起来这个数字).

到目前为止我有点困惑.我如何标记它以便findSum不会反复给我相同的数字列表?

Cha*_*ert 6

你可以先用生产函数的所有可能的子列表列表subsequencesData.List.然后,只需按其总和过滤列表即可.

import Data.List

sublistSum :: [Int] -> Int -> [[Int]]
sublistSum list target =
    filter (\x -> sum x == target) $ subsequences list
Run Code Online (Sandbox Code Playgroud)