ホームページ >バックエンド開発 >PHPチュートリアル >2次元配列、最初の項目の合計が求められ、2番目の項目の合計の最大値を求める
以下の配列があります
リーリーitemから4つの項目を取り出し、item[0]の合計が10になることを求め、item[1]の合計の最大値を求めます。
最適な解決策はありますか?
以下の配列があります
リーリーitemから4つの項目を取り出し、item[0]の合計が10になることを求め、item[1]の合計の最大値を求めます。
最適な解決策はありますか?
アイデアがバックパックの問題で行き詰まっていたため、コードが表示されましたbug
,即数量4
满足,但总和为10
并没有满足,实际情况是<=10
...
元の回答:
この問題はバックパックの問題のように見えますが、実際にはバックパックの条件よりも厳しいものです。
すべて item
的两个数可以分别对应背包问题里的weight(重量)
和value(价值)
、ただしバックパックとは異なります:
1. たくさん
item
只能选4
个,即背包里只能装4
个物品。
2.总重量严格要求等于10
,而非小于等于10
。
そのため、今のところ、従来の動的計画法と貪欲なアルゴリズムに対応する解決策を考えることができませんでした。ここでは、貪欲なアイデアを利用した、しかし異なるアルゴリズムを示します。
1.正直、私のこのコードには自信がありませんを入れます。
items
按照item[1]
的大小降序排列。
2.遍历items
,并计算取得的item[0]
的和,若大于10
,continue
,否则添加斤最终结果result
中,直到取出4
【最適解を保証するものではありません】 あくまでアイデアですので、他の専門家の方のご意見を頂きたいと思います。 ^0^
リーリー
出力結果:リーリー
以下は上記を踏まえて変更しておりますが、正確であることを保証するものではありません。 。 。
リーリー
出力結果:リーリー