Oppure

Loading
09/01/08 16:54
Piojolopez
Salve ragazzi sto creando di fare un risolutore di sudoku per un esame, di seguito vi scrivo la mia funzione di risoluzione, la cosa che non riesco a capire è come poter correttamente scrivere la ricorsione perkè in effetti, considerando che io la matrice del sudoku la memorizzo nell'array board, e parto a risolvere dall'ultimo elemento di essa, quando arrivo al passo d=-1 ossia quando l'array è completoentro nel primo if stampo quello che devo stampare ma poi in effetti nonostante il return in effetti non esce dalla funzione ma rimane ancora dentro e passa all'if(verita[d]) come mai???
void solve (int d) 
{
   if (d == -1) 
   { 
	   cout<<"FINISH"<<endl;
	   
	   for(int i=0;i<81;i++)
		   cout<<board[i]<<endl;
	   return ;
   }
   if (verita[d]) 
	   solve(d-1);
   else 
   {
	   for (int k=1 ; k <= 9 ; k++) 
	   {
		   board[d] = k;
		   if (check(d)) 
			   solve(d-1); 
		   else 
			   backs++;
	   }
	   board[d] = 0;
	}
}
aaa
09/01/09 15:34
RedBlueKK
Postato originariamente da Piojolopez:

Salve ragazzi sto creando di fare un risolutore di sudoku per un esame, di seguito vi scrivo la mia funzione di risoluzione, la cosa che non riesco a capire è come poter correttamente scrivere la ricorsione perkè in effetti, considerando che io la matrice del sudoku la memorizzo nell'array board, e parto a risolvere dall'ultimo elemento di essa, quando arrivo al passo d=-1 ossia quando l'array è completoentro nel primo if stampo quello che devo stampare ma poi in effetti nonostante il return in effetti non esce dalla funzione ma rimane ancora dentro e passa all'if(verita[d]) come mai???

if (verita[d])
     solve(d-1);


com'è fatto l'array "verita[d]" ? cosa contiene?
aaa