моя проблема совершенно уникальна. я рекурсивно нахожу powerset целочисленного массива, после этого я нахожу сумму массива, если сумма - это определенное число N, которое я ищу, он должен распечатать массив и прекратить выполнение, однако, в моем случае он распечатывает все подмножества, которые равны этому N вместо только первого.
фрагмент кода:
void main()
{
char a;
int arr[] = { 1, 4, 15, 20, 1, 1, 2, 3, 66, 14, 33 };
int n = sizeof(arr) / sizeof(arr[0]);
int temp[12];
powerSet(arr, temp, n, 0, 0);
scanf("%c", &a);
}
void powerSet(int* arr, int* p, int n, int pos, int index)
{
if (index >= n)
{
return;
}
p[pos] = arr[index];
if (arrSum(0, pos, p, 0) == 100)
{
PrintRec(0, pos, p);
return;
}
else
{
//Most likely an issue here.
powerSet(arr, p, n, pos + 1, index + 1);
powerSet(arr, p, n, pos, index+1);
}
}
void PrintRec(int j, int end, int* p)
{
if (j > end)
{
printf("\n");
return;
}
printf("%d ", p[j]);
PrintRec(j + 1, end, p);
}
arrSum:
int arrSum(int j, int end, int* p, int sum)
{
if (j > end)
{
return sum;
}
arrSum(j + 1, end, p, sum +=p[j]);
}
Полученные результаты верны, но мне нужен только первый результат.