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?

È stato utile?

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;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top