1

したがって、実際にはこれを使用してExtJS4で動的なフォームレイアウトを生成しますが、問題を単純化して、何も失うことなく議論を容易にすることができると思います。

2つのコンテナ内に配置したい整数のリストがあるとしましょう。完了したら、両方のコンテナーを「できるだけ均等」にします。この場合、各コンテナー内の整数の合計は、取得できる限り互いに近くなります。このシナリオでは、各コンテナにいくつの整数が含まれるかは問題ではなく、単にそれらの合計が近いことを意味します。

可能な入力と望ましい出力の例を次に示します。

Integers: [1,7,13,3,6,8]
Container A: [13,6] (sum 19) 
Container B: [1,7,3,8] (sum 19)

単純なアプローチの1つは、整数リストを1回繰り返し、各整数を現在合計が小さいコンテナーに入れることです。

Integers: [1,7,13,3,6,8]
Container A: [1,13,8] (sum 22)
Container B: [7,3,6] (sum 16)

この問題に取り組むために、皆さんはどのアルゴリズム/アプローチを提案しますか?かなりの数の潜在的なものがあると思います。コードサンプルで考える方が簡単な場合は、最終製品をjavascriptで実装します。

ありがとう!


編集

私はこれまでに提示された2つのアプローチ(cheekenとsumudu fernandoに感謝)が好きです。どちらも理想的な答えに近い(または正確に)何かをすばやく達成するための優れた方法を提供します。整数の十分に小さいセットの場合、計算を総当たり攻撃して、特定の答えが最良である(または最良に結び付けられている)と明確に言うことができると思います。そのようなことをするための提案はありますか?言い換えれば、潜在的に遅い(または大きな問題セットでは完全に実行不可能)という犠牲を払って理想的な答えを保証するアプローチです。

4

1 に答える 1

1
  1. すべての要素の合計を計算します。
  2. 合計の半分を計算しsます。
  3. ナップサック問題を、目標の合計を作る数に適用しsます。
  4. 溶液を一方の容器に入れ、残りの要素をもう一方の容器に入れます。
于 2012-10-03T01:50:44.490 に答える