eduardovp97

Un Trazo

Sep 20th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define N 5
  4.  
  5. void printArray(int array[], int n);
  6. int unTrazo(int matriz[N][N], int array[], int n);
  7. int isValid(int matriz[N][N], int array[], int n, int i);
  8.  
  9. int main(){
  10.  
  11.     int matriz[N][N] = {{0,1,1,0,1},{1,0,1,0,1},{1,1,0,1,1},{0,0,1,0,1},{1,1,1,1,0}};
  12.     int array[9];
  13.     array[0] = 0;
  14.     if(unTrazo(matriz,array,1)){
  15.         printArray(array,9);
  16.     }else{
  17.         printf("No se pudo.\n");
  18.     }
  19.  
  20.     return 0;
  21. }
  22.  
  23. void printArray(int array[], int n){
  24.     int i;
  25.     for(i=0; i<n; i++)
  26.         printf("%d ",array[i]);
  27.     printf("\n");
  28. }
  29.  
  30. int unTrazo(int matriz[N][N], int array[], int n){
  31.     if(n == 9)
  32.         return 1;
  33.     int i;
  34.     for(i=0; i<5; i++){
  35.         if(isValid(matriz,array,n,i)){
  36.             array[n] = i;
  37.             if(unTrazo(matriz,array,n+1)){
  38.                 return 1;
  39.             }
  40.         }
  41.     }
  42. }
  43.  
  44. int isValid(int matriz[N][N], int array[], int n, int i){
  45.     int a,b,j;
  46.     if(matriz[array[n-1]][i] == 1){
  47.         a = array[n-1];
  48.         b = i;
  49.         for(j=0; j<n-1; j++){
  50.             if(array[j]==a && array[j+1] == b) return 0;
  51.             if(array[j]==b && array[j+1] == a) return 0;
  52.         }
  53.         return 1;
  54.     }
  55.     return 0;
  56. }
Add Comment
Please, Sign In to add comment