私の問題は説明するのが少し難しいので、最善を尽くします。ターゲット番号と他の番号のリストを受け取るプログラムを書いています。リストの合計からの数字の組み合わせがターゲット数と同じになるまで、リストからの数字のすべての可能な組み合わせを追加したいと思います。たとえば、ターゲット番号が 6 で、提供されたリストの番号が <2, 3, 4, 5> の場合、プログラムは解を 2+4=6 として出力します。
私は現在、最も外側のループが最初の数値との組み合わせを定数としてチェックする4つのネストされたループでプログラムをセットアップしています。2 番目のループは 2 番目の定数を保持し、他の 2 つについても同様です。上記のリストのターゲット数が 20 の場合、プログラムは次の方法でチェックします。
2
2+3
2+3+4
2+3+4+5
2+3+5
2+4
2+4+5
2+5
3
3+4
3+4+5
3+5
4
4+5
5
その後、解決策が見つからないというメッセージが返されます。これは小さなリストでは問題なく機能しますが、リストに多数の小さな数字が含まれていてターゲットの数字が大きい場合はうまく機能しません。このプログラムには 4 つのループしかないため、最大で 4 つの数値しか追加できません。
これを行うためのより良い方法があるに違いないと考えずにはいられません。長いリストの場合、唯一の解決策はネストされたループをさらに作成することであり、これは実用的ではありません。ネストされたループを使用せずに、数値のリストのすべての組み合わせを調べる方法はありますか?
これが理解しやすかったことを願っています。私のコードをご覧になりたい場合は、お知らせください。ご協力ありがとうございました!