Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <cstdio>
- bool absentSurLigne (int k, int grille[9][9], int i)
- {
- for (int j=0; j < 9; j++)
- if (grille[i][j] == k)
- return false;
- return true;
- }
- bool absentSurColonne (int k, int grille[9][9], int j)
- {
- for (int i=0; i < 9; i++)
- if (grille[i][j] == k)
- return false;
- return true;
- }
- bool absentSurBloc (int k, int grille[9][9], int i, int j)
- {
- int _i = i-(i%3), _j = j-(j%3);
- for (i=_i; i < _i+3; i++)
- for (j=_j; j < _j+3; j++)
- if (grille[i][j] == k)
- return false;
- return true;
- }
- bool estValide (int grille[9][9], int position)
- {
- if (position == 9*9)
- return true;
- int i = position/9, j = position%9;
- if (grille[i][j] != 0)
- return estValide(grille, position+1);
- for (int k=1; k <= 9; k++)
- {
- if (absentSurLigne(k,grille,i) && absentSurColonne(k,grille,j) && absentSurBloc(k,grille,i,j))
- {
- grille[i][j] = k;
- if ( estValide (grille, position+1) )
- return true;
- }
- }
- grille[i][j] = 0;
- return false;
- }
- void affiche_grille(int grille[9][9])
- {
- for(int i = 0 ; i < 9 ; i++)
- {
- for(int j = 0 ; j < 9 ; j++)
- printf("%d ",grille[i][j]);
- printf("\n");
- }
- }
- int main(void)
- {
- int grille[9][9] =
- {
- {9,0,0,1,0,0,0,0,5},
- {0,0,5,0,9,0,2,0,1},
- {8,0,0,0,4,0,0,0,0},
- {0,0,0,0,8,0,0,0,0},
- {0,0,0,7,0,0,0,0,0},
- {0,0,0,0,2,6,0,0,9},
- {2,0,0,3,0,0,0,0,6},
- {0,0,0,2,0,0,9,0,0},
- {0,0,1,9,0,4,5,7,0}
- };
- if(estValide(grille,0))
- {
- printf("oui\n");
- affiche_grille(grille);
- }
- else
- printf("NON\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement