Ciao a tutti, stavo cercando di risolvere un problema relativo al gioco del sudoku....cercavo di implementare una funzioncina ricorsiva che risolveva uno schema di sudoku prendendo in input da file una matrice così costituita:
codice:
4 0 0 1
0 1 0 0
3 0 1 0
0 0 0 0
dove gli zeri cirrispondono alle caselle vuote...posto qua sotto la soluzione da me implementata che però presenta qualche errore che non sono riuscito a risolvere...se qualcuno potrebbe dare un'occhiata per vedere se riesce a trovare qualche errore...grazie
codice:
int solution ( int n, int** m, int N2, int i, int j )
{
int k;
if ( n >= N2*N2 ) {
if ( check_solution(m, N2) ) return SUCCESS;
}
if ( i < N2 ) {
if ( mat2[i][j] == 0 ) {
for ( k=1; k<=N2; k++ ) {
m[i][j] = k;
if ( j < N2 ) {
if ( solution( n+1, m, N2, i, j+1) ) return SUCCESS;
}
else {
j=0;
if ( solution( n+1, m, N2, i+1, j) ) return SUCCESS;
}
}
}
else {
if ( j < N2 ) {
if ( solution( n+1, m, N2, i, j+1) ) return SUCCESS;
}
else {
j=0;
if ( solution( n+1, m, N2, i+1, j) ) return SUCCESS;
}
}
}
return FAILURE;
}
n --> profondità per capire quando la matrice è stata riempita e fare il controllo se è stata trovata una soluzione;
N2 --> dimensione della matrice in questo caso dedotta in lettura..in questo caso 4
naturalmente n, i, j passati dal main hanno inizialmente valore 0