Advertisement
juanjo12x

UVA_574_Sum_It_Up

Apr 24th, 2014
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int t,n;
  5. int nums[12];
  6. int used[12];
  7.  
  8. int calc(int total,int first){
  9.     int i,j;
  10.     int done=0;
  11.     for(i=first; i<n; i++) {
  12.         if (used[i]) {
  13.             continue;
  14.         }
  15.         if (total == nums[i]) {
  16.             for(j=0; j<i; j++) {
  17.                 if (used[j]) {
  18.                     printf("%d+", nums[j]);
  19.                 }
  20.             }
  21.             printf("%d\n", nums[i]);
  22.             while(i<n && nums[i+1]==nums[i]) {
  23.                 i++;
  24.             }
  25.             done=1;
  26.         } else if (total > nums[i]) {
  27.             used[i]=1;
  28.             done += calc(total-nums[i], i+1);
  29.             used[i]=0;
  30.             while(i<n && nums[i+1]==nums[i]) {
  31.                 i++;
  32.             }
  33.         }
  34.     }
  35.     return done;
  36. }
  37. int main() {
  38.     int i;
  39.  
  40.     while(1) {
  41.         scanf("%d %d", &t, &n);/*Leo t y numero del arreglo*/
  42.         for(i=0; i<n; i++) {
  43.             scanf("%d", &nums[i]);
  44.             used[i]=0;
  45.         }
  46.         if (n==0) {
  47.             break;
  48.         }
  49.         printf("Sums of %d:\n", t);
  50.         if (!calc(t, 0)) {
  51.             printf("NONE\n");
  52.         }
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement