tata_monique a écrit :
Bonjour à tous, Donc voilà, j'ai terminé de coder mon solveur de sudoku. Le principe du programme : Il est basé sur le principe de backtracking à partir d'une liste de candidats. En gros, au début du programme, il remplit pour chaque case d'un tableau 9x9 (la grille de sudoku) une liste chainée représentant chaque "candidat" d'une case, càd chaque nombre possible pour cette case. L'algorithme de backtracking en lui même est un algo récursif qui remplit la première case avec le premier candidat de cette case, puis passe à la case à remplir suivante et est rappelé lui même sur cette case. Il va donc essayer toutes les possibilités pour toutes les cases et est censé trouver toutes les solutions possibles d'une grille donnée. Le problème : Seulement mon programme trouve toujours (sur plusieurs grilles testées) au moins une solution, mais jamais l'ensemble des solutions de la grille traitée. J'ai pour exemple 3 grilles possédant respectivement 1, 18 et 9474 solutions (toutes 3 composées des mêmes chiffres, avec quelques-uns enlevés pour les grilles à 18 et 9474 solutions). Lorsque je traite la première grille, pas de problème, il trouve l'unique solution. Pour la deuxième, il m'en trouve également une seule. Et pour la dernière il m'en trouve 3800 et des poussières. Ayant déjà testé mon programme dans tous les sens et étant à court d'idées, j'aimerais savoir si vous aviez des propositions sur l'origine du problème.
|