PDA

Visualizza la versione completa : [C] problema soluzione sudoku con ricorsione


MrX87
19-10-2008, 16:11
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:


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


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

oregon
19-10-2008, 16:37
Originariamente inviato da MrX87
... presenta qualche errore ...

Se resti così sul "vago", non credo ci sara' tanta gente disposta ad esaminare tutto il codice, capire cosa non va, correggerlo ...

Il tempo a disposizione e' quello che e', si risponde gratuitamente, ma non si puo' pretendere di non avere alcuna indicazione circa il problema!

Skull260287
19-10-2008, 17:41
Io ti posso indicare un buon riferimento, con descrizione dettagliata del problema e relativo codice ricorsivo: http://www.luigilamberti.it/Software/Sudoku/Sudoku.htm

MrX87
19-10-2008, 17:48
eh...il problema...sinceramente ancora nn sono riuscito a trovarlo...perchè l'ho testato con i sudoku 4x4 e funziona...trovando la soluzione nel giro di un secondo...mentre se provo a dare come input uno schema di sudoku con matrice 9x9 il programma inizia a lavorare ma non termina...continua a provare...però ho fatto un pò d debug e dovrebbe funzionare...almeno da quello che sembra facendo i primi step...cmq...ho mi scuso se nn ho detto qual era l'errore...ma pensavo che visto che era uin problema magari molto trattato...c'era qualcuno più esperto che l'aveva già affrontato e aiutarmi...tutto qui....cmq ringrazio Skull260287 per il link...vado a dare un'occhiata...

Loading