Método recursivo de busca

7 respostas
D

Como faço para criar um método recursivo de busca em uma matriz 10x10, onde a busca inicia de [0][0] e busca primeiramente para cima ou seja os próximo seriam [0][1], [0][2]… quando chegar em [0][9] anda para direita, exemplo: [1][9], [2][9] e depois desce.
Ou seja ele busca primeiramente para cima, depois para direita, depois para baixo e para esquerda. A ordem importa nesta busca.

Obrigada!

7 Respostas

luxu

Pesquise sobre arvore binaria faz exatamente isso q vc quer…

davidbuzatto

Tem certeza?

O que é cima, baixo, esquerda e direira para você?
Pq ao meu ver, [0,1]; [0,2]; [0,3] está indo para direita :?

E

Provavelmente ele quer percorrer a matriz como uma espiral. Algo como:

0  1  2  3  4  5  6  7  8  9
  +-----------------------------
0 |00 01 02 03 04 05 06 07 08 09
1 |35 36 37 38 39 40 41 42 43 10
2 |34                      44 11
3 |33                      45 12
4 |32                      46 13
5 |31 ...                  47 14
6 |30 59                   48 15
7 |29 58                   49 16
8 |28 57 56 55 54 53 52 51 50 17
9 |27 26 25 24 23 22 21 20 19 18

(onde 00, 01, 02, etc. é a ordem em que você vai visitar os elementos da matriz. Eu perdi a paciência no elemento 60, mas acho que vocês entenderam o que ele provavelmente quer. É isso mesmo?

davidbuzatto

Pois é entanglement, eu até tinha pensado nisso, mas mesmo assim achei melhor perguntar.
É isso mesmo dradeoliveira?

[]´s

D
9
										8
										7
										6
										5
										4
										3
										2
										1
x										0
0	1	2	3	4	5	6	7	8	9

O correto seria ele iniciar na posiçao [0][0] e subir para a [0][1], depois [0][2], quando chegar em [0][9] vira a direita, ou seja a ordem de prioridade é para cima, para a direita, para baixo e para a esquerda, sendo que ele marca as posições que andou.

Dieval_Guizelini

Esse problema é um dos clássico (risos)

Se o problema que você quer resolver é do tipo fillshape (tipo: achar a saída de um labirinto, percorrer todos os espaços interligados, procurar alguma coisa em uma sala etc), então a solução é:

considere a matriz com valores não percorridos (0) por exemplo e (1) para parede ou obstáculo, coloque a posição 0,0 em uma pilha e entre no laço:
enquanto o tamanho da pilha for maior do que 0 e tiver uma das quatro direções a ser visitada faça:

  • teste ir para cima (se possível), empilhe e reavalie o laço;
  • teste ir para direita (se possível), empilhe e reavalie o laço;
  • teste ir para baixo (se possível), empilhe e reavalie o laço;
  • teste ir para esquerda (se possível), empilhe e reavalie o laço;
  • caso contrário desempilhe

Certo?

D

Dieval,
é isso mesmo que eu preciso, só não sei como fazer.

Criado 10 de outubro de 2010
Ultima resposta 13 de out. de 2010
Respostas 7
Participantes 5