C++ の問題について助けが必要です。ユーザーは入力したい数字の数を入力し、次にすべての数字と特別な値を入力します。プログラムは、合計が特別な値に等しい数字のすべての組み合わせを見つけて書き込む必要があります。例:
入力
12 1 5 7 3 10 8 9 2 4 6 11 13 15
出力:
4 11 2 13 9 6 9 2 4 3 2 4 6 3 8 4 3 10 2 7 2 6 7 8 5 4 6 5 8 2 5 10 5 7 3 1 8 6 1 8 2 4 1 10 4 1 3 11 1 3 9 2 1 7 3 4 1 5 9 1 5 3 6 1 5 3 2 4 1 5 7 2
コード
2 つの要素で構成されるすべての組み合わせを記述するコードは次のとおりです。
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
int size;
cout << "Enter size: ";
cin >> size;
int *numbers = new int[size];
cout << "Enter numbers: ";
for (int i = 0; i < size; i++)
cin >> numbers[i];
int target;
cout << "Enter target: ";
cin >> target;
int sum = 0;
for (int i = 0; i < size-1; i++)
{
for (int j = i+1; j < size; j++)
{
sum = numbers[i];
sum += numbers[j];
if (sum == target)
cout << numbers[i] << " " << numbers[j] << "\n";
}
}
return 0;
}
その for ループを次のループに置き換えると、プログラムは 3 つの要素で構成されるすべての組み合わせを書き込みます。
for (int i = 0; i < size-2; i++)
{
for (int j = i+1; j < size-1; j++)
{
for (int k = j+1; k < size; k++)
{
sum = numbers[i] + numbers[j];
sum += numbers[k];
if (sum == target)
cout << numbers[i] << " " << numbers[j] << " " << numbers[k] << "\n";
}
}
}
これが私の質問です。考えられるすべての組み合わせを書き込むプログラムを作成するにはどうすればよいですか?