sda2
Messages postés4Date d'inscriptionjeudi 16 novembre 2006StatutMembreDernière intervention 5 mai 2007
-
6 janv. 2007 à 19:07
7afousaa
Messages postés3Date d'inscriptiondimanche 9 janvier 2011StatutMembreDernière intervention10 janvier 2011
-
10 janv. 2011 à 00:27
Bonsoir à tous,
Je vous
expose vite mon probleme, je souhaite realiser un sudoku (9x9),
cependant il ne resoud que les sudokus facile, moyen et lui resiste
certains difficiles et les diaboliques.
En faisant des recherches, la solution serait d' ajouter à ma fonction
de resolution du "backtracking", mais je ne vois franchement pas
comment faire.
Le code de ma fonction de resolution void sudoku(grille g) et le suivant:
void sudoku(grille g) // Fonction resolvant une grille (recursive)
{
int i, j, k, c;
grille g1=(Sgrille*)malloc(sizeof(Sgrille)); // Grille de recopie
g1=g; // On recopie g dans g1
if(g->k==81) // Test si la grille est remplie
affsudo(g); // Affichage de la solution
else
{
for(k=1;k<10;k++) // Parcours des possibilites
{
c=casecontr(g); // Defini c comme index
de la case la plus contrainte de la grille
// Definition des coordonnées (i,j) en fonction de c
i=c/9;
j=c-(i*9);
ens e=possibilite(g,i,j); // L 'ensemble e contient les possibilites de la case (i,j)
if(dans(e,k)==vrai) // Verifie si k est dans l' ensemble e
{
g1=ielem(g1,i ,j ,k); //insert dans g1 l'element k à la case (i,j)
sudoku(g1);
}
}
}
}
Desolé, je ne sais pas comment on indente , je suis nouvelle sur le forum .
Donc, si quelqu' un aurait une idée pour ameliorer mon programme, je
lui serais reconnaissante, cela fait 2 jours que je ne dors plus .