サイズ n の整数の配列を、2 つ以上の数値を乗算するだけで 2 つの数値に削除したいと考えています。これらの 2 つの数値 (M1 と M2) の条件は、M1-M2 の減算の結果が他の可能なケースの中で小さい値になることです。次の例は、問題をより詳細に示しています。
配列のサイズが 4 で、要素が [n1,n2,n3,n4] であるとします。
可能な除去は次のとおりです。
M1 = n1 および M2 = n2xn3xn4
M1 = n2 およびM2 = n1xn3xn4
M1 = n3 およびM2 = n1xn2xn4
M1 = n4 およびM2 = n1xn2xn3
M1 = n1xn2 およびM2 = n3xn4
M1 = n1xn3 およびM2 = n2xn4
M1 = n1xn4 およびM2 = n2xn3
M1 = n2xn3 およびM2 = n1xn4
M1 = n2xn4 およびM2 = n1xn3
M1 = n3xn4 およびM2 = n1xn2
この例では、M1とM2の可能な値が 10 あります。私の問題で必要な正しい値は、他の 9 つの値の中で ABS( M1 - M2 ) の最小値です。複数の正解 (類似) になる可能性がありますが、これは無視できます。必要な出力は、M1に 1 つの値、M2に 1 つの値です。
注: C++ であればありがたいです :)
前もって感謝します...