Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema ricorsione sudoku....
Forum - C/C++ - problema ricorsione sudoku....

Avatar
Piojolopez (Normal User)
Newbie


Messaggi: 1
Iscritto: 09/01/2008

Segnala al moderatore
Postato alle 17:54
Mercoledì, 09/01/2008
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???
Codice sorgente - presumibilmente C++

  1. void solve (int d)
  2. {
  3.    if (d == -1)
  4.    {
  5.            cout<<"FINISH"<<endl;
  6.            
  7.            for(int i=0;i<81;i++)
  8.                    cout<<board[i]<<endl;
  9.            return ;
  10.    }
  11.    if (verita[d])
  12.            solve(d-1);
  13.    else
  14.    {
  15.            for (int k=1 ; k <= 9 ; k++)
  16.            {
  17.                    board[d] = k;
  18.                    if (check(d))
  19.                            solve(d-1);
  20.                    else
  21.                            backs++;
  22.            }
  23.            board[d] = 0;
  24.         }
  25. }


PM Quote
Avatar
RedBlueKK (Normal User)
Newbie


Messaggi: 2
Iscritto: 09/01/2009

Segnala al moderatore
Postato alle 16:34
Venerdì, 09/01/2009
Testo quotato

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?

PM Quote