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

.
Merci d'avance.
Bonne fin soirée.
PS: j' ai ausii posté dans le theme: algo/maths
