私は製品(オブジェクト)の配列を持っています。私はできるだけ少ない金額(この場合は$ 50)で最大限のBaseを獲得することで、あなたの利益を最大にすることを望んでいます。以下のデータセットの場合、正しい結果にはfoo
bar
とbaz
の配列が含まれます。入れ子オブジェクトの値に基づいてオブジェクトの配列を集める
"result": [
{
"name": "foo",
"price": 20,
"Base": 52,
},
{
"name": "bar",
"price": 12,
"Base": 51,
},
{
"name": "baz",
"price": 15,
"Base": 50,
},
{
"name": "qux",
"price": 10,
"Base": 47,
},
]
もともと私は[]
の初期アキュムレータと減速機を使用するだろうと思ったが、私は持っている私の製品はどこかの間に600個の範囲であることができる - 2000年の製品を、私はそれが
私は必要とは思わないときに2つの配列を追跡しているので、私はこのコードが嫌いです。私が見る限り、上記の出力は正しいですが、私の実装を改善できるかどうかは不思議です。ありがとう!
[ナップザック問題](https://en.wikipedia.org/wiki/Knapsack_problem)のように見えます。 –
まさに!ここには[great video](https://www.youtube.com/watch?v=8LusJS5-AGo)もあります。 – Zevgon
多くのjsソリューションがあります:https://gist.github.com/frobnitzem/28707410b81870e88925097fdfe1f85b –