Haskell数据类型过滤子列表列表

时间:2012-03-23 00:21:58

标签: list haskell filter sublist

我有一个人名数据,其名称和重量如下所示。

data Person = Person
    {pName :: String,
     pWeight :: Double} deriving (Show)

persons :: [Person]
persons = [Person "Peter" 35.0,
            Person "Joe" 45.0,
            Person "Alex" 55.0,
            Person "Ruby" 60.0,
            Person "John" 65.0,
            Person "Ann" 35.0]

Q1 如果我想过滤并从给定人员列表中获取其最大权重总和小于给定值的第一个子集怎么做?

例如,如果最大重量为150.0,则输出

人“彼得”35.0

人“乔”45.0

人“Alex”55.0

总重量:135.0

Q2 如果我想获得设置的最大重量的所有子集

例如,如果最大重量为100.0,则输出

设置1

人“彼得”35.0 人“乔”45.0

总重量:80.0

设置2

人“Alex”55.0

总重量:55.0

设置3 ......等等

1 个答案:

答案 0 :(得分:2)

第一种可以使用过滤器完成。第二个似乎是一个背包问题。在这种情况下,您可以搜索解决它的策略。如果您在编写代码后遇到任何问题,请在此处重新发布,社区将很乐意为您提供帮助。