Voila j'essaie de faire un prog qui remplie les cases d'un sudoku
j'ai ma fonction candidats qui me renvoie une file contenant tout les candidats possible avec la case en question.
j'utilise une pile de structure qui contient les coordonnées de la case et la file en question a laquelle on a enlever la valeur que l'on a mis dans la case.
struct donnee
{
position pos;
queue<int> valeur;
};
struct position
{
int lig;
int col;
};
toute les case de la grille de sudoku qui sont vide comporte des zéro
j'ai fait une procédure qui est censé me renvoyer la grille complété
mais voila quand il trouve une erreur (ou plutot pas de possibilité pour une case) c la que sa coince il est censé dépiler pour prendre le candidat suivant a la file s'il y en a un et la grille renvoyer est totalement fausse
quelqu'un aurai une solution a me proposer avec ce que j'ai fait?
void solution (int grille [9][9])
{
int i, j;
bool b;
stack<donnee> p;
donnee cases;
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
if (grille [i][j] == 0)
{
cases.pos.lig = i;
cases.pos.col = j;
cases.valeur = candidats (cases.pos, grille);
if (!cases.valeur.empty())
{
grille [cases.pos.lig][cases.pos.col] = cases.valeur.front();
cases.valeur.pop(); //Retirer la valeur de la tête de file
p.push(cases); //Empiler la structure
}
else
{
p.pop();
b = false;
while (!b)
{
if (!p.top().valeur.empty())
{
p.pop();
}
else
{
grille [i][j] = p.top().valeur.front();
p.top().valeur.pop();
b = true;
}
}
}
}
}
}
}