我需要一些关于 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";
}
}
}
这是我的问题:如何制作一个编写所有可能组合的程序?