Мне нужно решить проблему с суммой подмножеств.Необходимо выяснить, может ли подмножество массива суммироваться до требуемого значения.Пример ввода9: 3 34 4 12 5 29 = 5 + 4
Однако, я получаю ошибку сегментации и некоторые предупреждения ниже
logParse.c: In function ‘findSubset’:
logParse.c:37:4: warning: passing argument 2 of ‘subsetSum’ from incompatible pointer type [enabled by default]
subsetSum(set, subSet, size, 0, 0, 0, sum);
^
logParse.c:21:6: note: expected ‘int *’ but argument is of type ‘int **’
void subsetSum(int set[], int subSet[], int n, int subSize, int total, int nodeCount ,int sum) {
^
gcc logParse.c -o logParse
logParse.c: In function ‘findSubset’:
logParse.c:37:4: warning: passing argument 2 of ‘subsetSum’ from incompatible pointer type [enabled by default]
subsetSum(set, subSet, size, 0, 0, 0, sum);
^
logParse.c:21:6: note: expected ‘int *’ but argument is of type ‘int **’
void subsetSum(int set[], int subSet[], int n, int subSize, int total, int nodeCount ,int sum) {
Вот мой ошибочный код
void displaySubset(int subSet[], int size) {
int i;
int subset[size];
for(i = 0; i < size; i++) {
printf("%d ",subset[i]);
//printf(" ");
}
printf("\n");
}
void subsetSum(int set[], int subSet[], int n, int subSize, int total, int nodeCount ,int sum) {
int i;
if( total == sum) {
displaySubset(subSet, subSize); //print the subset
subsetSum(set,subSet,n,subSize-1,total-set[nodeCount],nodeCount+1,sum); //for other subsets
return;
}else {
for(i = nodeCount; i < n; i++ ) { //find node along breadth
subSet[subSize] = set[i];
subsetSum(set,subSet,n,subSize+1,total+set[i],i+1,sum); //do for next node in depth
}
}
}
void findSubset(int set[], int size, int sum) {
int subSet[size]; //create subset array to pass parameter of subsetSum
subsetSum(set, subSet, size, 0, 0, 0, sum);
}
int main(int argc, char *argv[]){
int weights[] = {10, 7, 5, 18, 12, 20, 15};
int size = 7;
findSubset(weights, size, 35);
return 0;
}
Вот мой ошибочный вывод
1173794464 32765 4197334
1173794464 32765 4197334
1173794544 32765
Пожалуйста, помогите мне, как исправить мой код, спасибо