i got this code
its very complicated
how to trace it in the most afficient way?
Code:
#include <stdio.h>
void print(int *arr, int n);
int what(int *parts, int size, int number, int *set, int count);
void print(int *arr, int n){
int i ;
for (i=0; i<n; i++)
printf(" %d",arr[i]);
puts("");
}
int what(int *parts, int size, int number, int *set, int count){
int res=0,i;
if(!number){
print(set, count);
return 1;
}
for(i=0; i<size; i++)
if(number >= parts[i]){
set[count] = parts [i];
res += what(parts, size, number-parts[i], set,count+1);
}
return res;
}
void main(){
int parts[]={3, 1, 2}, set[4], result;
result = what(parts, 3, 4, set, 0);
printf("%d\n", result);
}