Advertisement
juanjo12x

LAB3_Algoritmia_P2_Sums

May 4th, 2014
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int matriz[1000];
  4. int n;int path[1000]={0};int verif[1000]={0};
  5.  
  6. int verificar(int j){
  7.    
  8.     if (verif[j]!=0){
  9.         return 0;
  10.     }else{
  11.         return 1;/*puedo tomarlo*/
  12.     }
  13.            
  14. }
  15.  
  16. int backtrack(int suma,int caso,int numultimo){
  17.    
  18.    
  19.     if (suma==n){
  20.        
  21.         int i=0;
  22.         printf("{");
  23.         while((path[i]!=0) && path[i]!=suma){
  24.             printf("%d, ",path[i]);
  25.             i++;
  26.         }
  27.        
  28.         printf("}");
  29.          if (path[i]!=suma) printf("\n");
  30.          path[caso-1]=0;
  31.          verif[numultimo]=0;
  32.          return 0;
  33.     }
  34.     int i;int s;int r;
  35.     for (i=numultimo;i<n;i++){
  36.         if (verificar(i)){
  37.             s=suma+matriz[i];
  38.             if (s<=n) {
  39.             path[caso]=i+1;
  40.             verif[i]=1;
  41.             r=backtrack(s,caso+1,i);
  42.         }
  43.         }
  44.        
  45.     }
  46.     path[caso-1]=0;
  47.     verif[numultimo]=0;
  48.     return 0;
  49. }
  50. int main(int argc, char** argv) {
  51.    
  52.     scanf("%d",&n);
  53.     int i;
  54.     for(i=0;i<n;i++){
  55.         matriz[i]=i+1;
  56.     }
  57.     int s;int j;
  58.     j=backtrack(0,0,0);
  59.    
  60.    
  61.    
  62.     return (EXIT_SUCCESS);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement