Pergunta

estou tentando imprimir um caminho de solução em um labirinto. Cada célula tem um pai de onde vamos para essa célula. Estou imprimindo o caminho com o código a seguir.

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

o problema é que pula algumas células. Não consegui descobrir por quê?

O pai de 7,7=6,7

O pai de 6,7=5,7

O pai de 5,7 = 4,7

O pai de 4,7=3,7

O pai de 3,7=2,7

O pai de 2,7=1,7 // como você pode ver, agora devemos imprimir 1,7 mas ele pula 1,7 e vai para 1,6

O pai de 1,6 = 1,5

O pai de 1,5=2,5 // pula 2,5 e vai direto para 2,3

O pai de 2,4=2,3

O pai de 2,3 = 1,3

O pai de 1,2 = 1,1

O pai de 1,1=0,1

O pai de 0,0=1,0

O pai de 1,0 = 2,0

O que há de errado com o código?

Foi útil?

Solução

index1=theParents[index1][index2][0];
index2=theParents[index1][index2][1]; // the index1 here is already reassigned!

Você já reatribuiu o index1 quando for utilizá-lo na atribuição do index2.

Você precisa de algo como

int newindex1 = theParents[index1][index2][0];
int newindex2 = theParents[index1][index2][1];

index1 = newindex1;
index2 = newindex2;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top