以下のプレイヤーとそのポイントの配列があります。私は2つの同等のチームに分けたがって、ポイントの合計は可能な限り均等にする必要があります。PHPの配列を2つの等価集合に分割し、値の和が等しい場合
例えば、出力は次のようになります
チームA =プレイヤーIDの505、481、510、合計6
チームB =プレイヤーIDの504、509、513である点、合計6
ある点これを達成する方法について私に正しい方向を教えてもらえますか?
だからこの問題は、何を推測するパーティショニングの最適化問題は、あるあなたに
Array
(
[0] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 505
[1] => 505
[Points] => 4
[2] => 4
)
[1] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 481
[1] => 481
[Points] => 1
[2] => 1
)
[2] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 510
[1] => 510
[Points] => 1
[2] => 1
)
[3] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 504
[1] => 504
[Points] => 1
[2] => 1
)
[4] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 509
[1] => 509
[Points] => 4
[2] => 4
)
[5] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 513
[1] => 513
[Points] => 1
[2] => 1
)
)
mysqli_fetch_array()の代わりにmysqli_fetch_assoc()を使い、少なくとも1回はassoc配列としてデータを取得し、アソークでも数値配列でもない – RiggsFolly
プレーヤーの数も同じである必要がありますか?ポイントごとに並べ替えることができますし、ポイントが最も高いものから順に並べ替えることができます。 お手数ですが、お手数ですが、 [ソート - マニュアル](http://php.net/manual/en/function.usort.php) 'function sortByPoints($ a、$ b){ return strcmp($ a-> Points、$ b- >ポイント); } usort($ array、 'sortByPoints'); ' –
どのようにデータを取得していますか?セットやデータベースからクエリを実行する場合は、クエリを改善してより実行可能な結果を得るための最初のステップが必要だと思います。ほとんどのインターフェイスでは、プレイヤーがクエリを行い、ポイントを合計できます。意味することは簡単にassocを構築することができます。プレーヤーIDと合計のみの配列。次に、簡単なソートは、類似したスコアを持つすべてのものを最も近いものに置きます。 – Luke