Cosa c'è di sbagliato nella stampa di un percorso nel grafico?
-
12-12-2019 - |
Domanda
Sto cercando di stampare un percorso di soluzione in un labirinto. Ogni cella ha un genitore da dove andiamo a quella cella. Sto stampando il percorso con il seguente codice.
do{
System.out.print("The parent of "+index1+","+index2+"=");
System.out.println(theParents[index1][index2][0]+","+theParents[index1][index2][1]);
index1=theParents[index1][index2][0];
index2=theParents[index1][index2][1];
}while(!(index1==2 && index2==1));
.
Il problema è che salta alcune celle. Impossibile capire perché?
La genitore di 7,7= 6,7
Il genitore di 6,7= 5,7
Il genitore di 5,7= 4,7
Il genitore di 4,7= 3,7
Il genitore di 3,7= 2,7
Il genitore di 2,7= 1,7 // Come vedi, dovremmo ora stampare 1,7 ma salta 1,7 e goto 1,6
Il genitore di 1,6= 1,5
Il genitore di 1,5= 2,5 // salta 2,5 e vai a 2,3
Il genitore di 2,4= 2,3
Il genitore di 2,3= 1,3
Il genitore di 1,2= 1,1
Il genitore di 1,1= 0,1
Il genitore di 0,0= 1,0
Il genitore di 1,0= 2,0
Cosa c'è di sbagliato nel codice?
Soluzione
index1=theParents[index1][index2][0];
index2=theParents[index1][index2][1]; // the index1 here is already reassigned!
.
Hai già riassegnato l'indice1 quando si va per usarlo nell'assegnazione dell'indice2.
Hai bisogno di qualcosa come
int newindex1 = theParents[index1][index2][0];
int newindex2 = theParents[index1][index2][1];
index1 = newindex1;
index2 = newindex2;
.