Photolog
Back to list of problems
Sum It Up
574.c
/* Sum It Up */
#include <stdio.h>
#include <stdlib.h>
int t,n;
int nums[12];
int used[12];
int
calc(int total, int first) {
int i,j;
int done;
done=0;
for(i=first; i<n; i++) {
if (used[i]) {
continue;
}
if (total == nums[i]) {
for(j=0; j<i; j++) {
if (used[j]) {
printf("%d+", nums[j]);
}
}
printf("%d\n", nums[i]);
while(i<n && nums[i+1]==nums[i]) {
i++;
}
done=1;
} else if (total > nums[i]) {
used[i]=1;
done += calc(total-nums[i], i+1);
used[i]=0;
while(i<n && nums[i+1]==nums[i]) {
i++;
}
}
}
return done;
}
int
main(void) {
int i;
while(1) {
scanf("%d %d", &t, &n);
for(i=0; i<n; i++) {
scanf("%d", &nums[i]);
used[i]=0;
}
if (n==0) {
break;
}
printf("Sums of %d:\n", t);
if (!calc(t, 0)) {
printf("NONE\n");
}
}
exit(0);
}









