アレイ識別論理

0K、ここでそれは問題です、私は可能な限り明確にしようとします。

So, we have an array of key-value pairs in the form unique id
=> number.

pseudo code array A= array(0 => 17, 1 => 26, 2 =>
17, 3 => 2, 4 => 7, 5 => 8);

数字の合計が60であることがわかります。これは常に正しいため、配列内の合計は常に正しいです。

now we have array B in array B, also unique id => value
pairs, BUT here some of the values are PHONY/INCORRECT, and
total(array B)-total(array A) has to be 0.

i.e. for the upper example array A= array(6 => 22, 7
=> 11, 8 => 8, 9 => 9, 10 => 5, 11 => 10, 12 =>
7, 13 => 17, 14 => 10);

現在、配列Bの合計は99です。60-99 =
-39です。つまり、配列Bから39に等しい数のすべての組み合わせを見つける必要があります。この場合、@
eyeを見るだけで、これの唯一の2つの組み合わせに見えますユニークなids
10,12,13,14が正しくないか、10,11,12,13がPHONY/INCORRECT(5 + 7 + 17 + 10 =
39)である可能性があります。このような小さな配列では、これらのループを使用してすべての可能なオプションを繰り返し検索するのは簡単ですが、配列は数千(一意のID)に及んでいます。これを行う最善の方法は何ですか?どのようにコンピュータが偽/不正確なペアを最も速く見つけるか?

また、私は最高の(そして良い)答えを与える人にビールを借りています。

ベストアンサー

配列Bの合計は99です。60-99 =
-39。これは、配列Bと等しい39のすべての数の組み合わせを見つける必要があることを意味します。

これは、間違っているすべての数字が0であるべきであることが分かっている場合にのみ当てはまります。

アレイ内の任意の数またはすべての数は、エラー量の合計が39であるような量だけオフになることによってエラーに寄与することができます。

つまり、特定の合計に追加される数字のリストのサブセットを見つける問題は、問題の通常のステートメントはそのようなサブセットの存在を確認するだけですが、あなたはそのようなサブセットのリストを探しています。

大きなセットでは効果的なソリューションが存在するとは思えず、ブルートフォースのソリューションは指数関数的に増加しています。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です