Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio>
  3.  
  4. bool absentSurLigne (int k, int grille[9][9], int i)
  5. {
  6.     for (int j=0; j < 9; j++)
  7.         if (grille[i][j] == k)
  8.             return false;
  9.     return true;
  10. }
  11.  
  12. bool absentSurColonne (int k, int grille[9][9], int j)
  13. {
  14.     for (int i=0; i < 9; i++)
  15.         if (grille[i][j] == k)
  16.             return false;
  17.     return true;
  18. }
  19.  
  20. bool absentSurBloc (int k, int grille[9][9], int i, int j)
  21. {
  22.     int _i = i-(i%3), _j = j-(j%3);
  23.     for (i=_i; i < _i+3; i++)
  24.         for (j=_j; j < _j+3; j++)
  25.             if (grille[i][j] == k)
  26.                 return false;
  27.     return true;
  28. }
  29.  
  30. bool estValide (int grille[9][9], int position)
  31. {
  32.     if (position == 9*9)
  33.         return true;
  34.  
  35.     int i = position/9, j = position%9;
  36.  
  37.     if (grille[i][j] != 0)
  38.         return estValide(grille, position+1);
  39.  
  40.     for (int k=1; k <= 9; k++)
  41.     {
  42.         if (absentSurLigne(k,grille,i) && absentSurColonne(k,grille,j) && absentSurBloc(k,grille,i,j))
  43.         {
  44.             grille[i][j] = k;
  45.  
  46.             if ( estValide (grille, position+1) )
  47.                 return true;
  48.         }
  49.     }
  50.     grille[i][j] = 0;
  51.  
  52.     return false;
  53. }
  54.  
  55. void affiche_grille(int grille[9][9])
  56. {
  57.     for(int i = 0 ; i < 9 ; i++)
  58.     {
  59.         for(int j = 0 ; j < 9 ; j++)
  60.             printf("%d ",grille[i][j]);
  61.  
  62.     printf("\n");
  63.     }
  64. }
  65.  
  66. int main(void)
  67. {
  68.     int grille[9][9] =
  69.     {
  70.         {9,0,0,1,0,0,0,0,5},
  71.         {0,0,5,0,9,0,2,0,1},
  72.         {8,0,0,0,4,0,0,0,0},
  73.         {0,0,0,0,8,0,0,0,0},
  74.         {0,0,0,7,0,0,0,0,0},
  75.         {0,0,0,0,2,6,0,0,9},
  76.         {2,0,0,3,0,0,0,0,6},
  77.         {0,0,0,2,0,0,9,0,0},
  78.         {0,0,1,9,0,4,5,7,0}
  79.     };
  80.  
  81.     if(estValide(grille,0))
  82.     {
  83.         printf("oui\n");
  84.         affiche_grille(grille);
  85.     }
  86.     else
  87.         printf("NON\n");
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement