Bonjour à toutes et à tous,
j'ai à écrire un code pour résoudre un sudoku.(en c)
on suppose que la grille en entrée est un tableau de 9*9 chiffres entre 0 et 9 (0 pour les cases vides).
inspirée de celle présente dans le code de i2i.fr la fonction resoudre est la suivante :
indications:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void resoudre(void) { int ligne, col, nbre, nbre_tamp; for (ligne = 0; ligne < size; ligne++) { for (col = 0; col < size; col++) { if (sudo[ligne][col]) continue; for (nbre = 1; nbre <= size; nbre++) { if (!verifier(ligne,col,nbre,sudo)) continue; nbre_tamp = sudo[ligne][col]; sudo[ligne][col] = nbre; resoudre(); if (grille_finie(sudo)) return; sudo[ligne][col] = nbre_tamp; } return; } } return; }
-la grille à resoudre est sudo
-la fonction verifier(i,j,x,sudo) renvoie 1 s'il est possible de placer x dans sudo[i][j] et 0 sinon
-la fonction grille_finie renvoi 1 si la grille est remplie (plus de cases vides) et 0 sinon
-resoudre() est recursive
voilà, quand j'execute ça ne resoud pa la grille, la grille en entrée reste la même en fin de traitement-->je ne comprends pas du tout, je bloque là
un grand merci d'avance
Partager