0

名前があり、体重が以下のような人のデータ型を取得しました。

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特定の人のリストから、最大重みの合計が特定の値未満になる最初のサブセットをフィルタリングして取得したい場合、どうすればよいですか?

例: 最大 Weight が 150.0 の場合の出力

人物「ピーター」 35.0

人物「ジョー」 45.0

人物「アレックス」 55.0

総重量 : 135.0

Q2設定した最大ウェイトのサブセットを全て取得したいのですが?

例 最大重量が 100.0 の場合の出力

セット 1

人物「ピーター」 35.0 人物「ジョー」 45.0

総重量:80.0

セット 2

人物「アレックス」 55.0

総重量 : 55.0

セット3 ……など

4

1 に答える 1

2

1 つ目は、フィルターを使用して行うことができます。2 つ目は、ナップザックの問題のようです。その場合、それを解決するための戦略を検索できます。コードを記述した後に問題が発生した場合は、ここに再投稿してください。コミュニティが喜んでお手伝いします。

于 2012-03-23T04:59:06.527 に答える