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:
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...graziecodice:4 0 0 1 0 1 0 0 3 0 1 0 0 0 0 0
n --> profondità per capire quando la matrice è stata riempita e fare il controllo se è stata trovata una soluzione;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; }
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

Rispondi quotando

