Bonjour,
j'aimerai comprendre le programme suivant (solveur de sudoku par backtracking) : http://www.ai.univ-paris8.fr/~bh/cou...u/sudoku_mrv.c, là où ça se corse pour moi c'est quand je vois :
A quoi servent les appels à memcpy ? Je sais que cette fonction recopie le contenu de domaine dans domaine2, et inversement, mais à quoi cela sert-il ici (le commentaire ne m'aide pas vraiment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 for (grille[i_min] = 1; grille[i_min] <= 9; grille[i_min]++) { if (domaine[i_min][grille[i_min]] == 0) continue; /* on sauvegarde l'etat courant de domaine et domaine_taille pour les retablir apres l'appel recursif */ memcpy(domaine2, domaine, sizeof(domaine)); memcpy(domaine_taille2, domaine_taille, sizeof(domaine_taille)); restreindre_domaines(i_min); backtrack(); memcpy(domaine, domaine2, sizeof(domaine)); memcpy(domaine_taille, domaine_taille2, sizeof(domaine_taille)); } grille[i_min] = INCONNU;) ?
Ca a forcément un rapport avec l'appel récursif à backtrack(), mais je ne comprends rien de plus...
Merci beaucoup par avance !
Partager