The problem i have is about the iterator, but i don't know how i can fix it, i need your help.
This problem blocks me to come back in to the main function, and so i can't output my solution.
Thank you, and sorry for my bad english
Expand|Select|Wrap|Line Numbers
- void risolvi(int indice)
- {
- list<int> SOLUZIONI;
- list<int >::iterator scorri;
- list<int >::iterator scendi;
- if(indice==81)
- {
- vector<int>::iterator scorrimento;
- for(scorrimento=VETTORE.begin(); scorrimento!=VETTORE.end(); scorrimento++)
- cout<<*scorrimento<<endl;
- cout<<"THE END"<<endl;
- }
- else
- {
- if(verita[indice])
- risolvi(indice+1);
- else
- {
- //list<int> SOLUZIONI;
- for(int s=1;s<=9;s++)
- SOLUZIONI.push_back(s);
- int riga = indice/9, colonna = indice%9;
- int imin = (riga/3)*3;
- int jmin = (colonna/3)*3;
- //ELIMINO GLI ELEMENTI GIA' PRESENTI NEL CUBO 3x3
- for(int rig=imin ; rig < imin+3 ; rig++)
- {
- for(int colonna=jmin ; colonna < jmin+3 ; colonna++)
- if(VETTORE[9*rig+colonna]!=0)
- SOLUZIONI.remove(VETTORE[9*rig+colonna]);
- }
- //ELIMINO GLI ELEMENTI GIA' PRESENTI NELLA RIGA
- for(int i=indice%9;i<=(indice%9)+72;i=i+9)
- if(VETTORE[i]!=0)
- SOLUZIONI.remove(VETTORE[i]);
- //ELIMINO GLI ELEMENTI GIA' PRESENTI NELLA COLONNA
- for(int m=indice/9*9;m<(indice/9*9)+8;m++)
- if(VETTORE[m]!=0)
- SOLUZIONI.remove(VETTORE[i]);
- //ELIMINA LA PRIMA SOLUZIONE CHE HO CONSIDERATO AL PASSO PRECEDENTE
- //MA CHE IL BACKTRACKING MI HA VALUTATO ERRATA
- if(backtracking!=appoggio&&SOLUZIONI.size()!=0)
- {
- //list<int>::const_iterator scendi;
- scendi=SOLUZIONI.begin();
- while(*scendi<=numero&&SOLUZIONI.size()!=0)
- //while(SOLUZIONI[1]<=numero && SOLUZIONI.size()!=0)
- {
- scendi++;
- SOLUZIONI.pop_front();
- if(SOLUZIONI.size()==0)
- {
- appoggio=backtracking;
- do
- {
- if(!verita[indice])
- VETTORE[indice]=0;
- indice--;
- }
- while(verita[indice]);
- numero=VETTORE[indice];
- backtracking++;
- risolvi(indice);
- }
- }
- appoggio=backtracking;
- }
- scorri=SOLUZIONI.begin();
- if(SOLUZIONI.size()!=0)
- {
- VETTORE[indice]=*scorri;
- //if (indice==79)
- // return;
- risolvi(indice+1);
- }
- else
- {
- appoggio=backtracking;
- do
- {
- if(!verita[indice])
- VETTORE[indice]=0;
- indice--;
- }
- while(verita[indice]);
- numero=VETTORE[indice];
- backtracking++;
- risolvi(indice);
- }
- }
- }
- }