このプログラムの目的は、配列内の入力の 1 つが他の入力の任意の組み合わせの合計になるかどうかを確認することです。私はその背後にある理論を理解し、それを解決する方法を考え出しましたが、それを実装する方法がわかりません。配列を最小から最大の順に並べ替えることにしました。次に、数値のペアを次の入力と比較してから、3 つの入力を使用し、次に 4 などを使用すると考えましたが、再帰をどのように使用するかわかりません。これを解決します。完全な回答を探しているのではなく、いくつかの方向性が非常に役立ちます。
質問する
727 次
1 に答える
0
そうねぇ..
目標の合計が必要なので、それは議論の 1 つです。
これまでに合計が必要なので、それは別のことです。
Boolean IsSubsetSum(int[] sorted array, int Target,int maxIndex , int SumSoFar = 0);
これは、開始するのに適した場所のように思えます。
SumSoFar == ターゲットの場合
真を返す
それ以外の場合は maxIndex == 0
false を返す
そうしないと
array[maxIndex] を合計に追加し、適切な引数を使用して再帰的に呼び出します。
このステップは 0..maxIndex をループするため、あまり効率的ではありませんが、最初は十分です。再帰呼び出しの戻り値から戻り値を計算する必要があります。true が見つかった場合は、早期に終了できます。
于 2013-02-07T02:27:14.823 に答える