Autor
|
Tema: recorrido de una matriz de forma recursiva (Leído 17,544 veces)
|
dark_headhunter
Desconectado
Mensajes: 208
solo tu eres dueño de tu destino
|
Hola amigos, estoy quemándome con un ejercicio que no consigo sacar:
Dada un punto cualquiera de una matriz (no importa la dimensión), por simplicidad pongamos 10x10, pues desde ese punto hacer un recorrido de forma recursiva, como si tirásemos una piedra a un lago por ejemplo , en el caso de sumar uno a cada nivel quedaría algo así:
212 101 212
cada vez que aumenta x o y, suma uno, ¿Alguien puede ayudarme?
|
|
|
En línea
|
La informacion es nuestra arma, el anonimato nuestra armadura
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
No dices en que lenguaje así que te lo pongo en Pascal: program Project1; {$APPTYPE CONSOLE} uses SysUtils; var x, y: integer; Matriz: array [0..9, 0..9] of integer; begin for x := 0 to 9 do for y := 0 to 9 do begin if Matriz[x, y] = 14 then //Hacemos algo... end; end.
Es un bucle dentro de otro, así que recorrería todos los elementos de la matriz.. Saludos.
|
|
|
En línea
|
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
No se si te he entendido bien lo que quieres decir, pero si lo que pretendes es sumar en una unidad el resto de elementos que rodean a uno dada su posición X e Y sería sencillo. Si no es eso, y lo que quieres hacer es dada una posición X e Y recorrer el resto de la matriz sumando uno pero tomando como valor inicial el de la posición X e Y ya sería algo más complicado, pero se puede realizar, aclaralo un poco y te ayudaremos en lo posible.
Si la solución que buscas es la que ha propuesto Khronos14 entonces resuelto xD.
Saludos.
|
|
|
En línea
|
|
|
|
dark_headhunter
Desconectado
Mensajes: 208
solo tu eres dueño de tu destino
|
No me he explicado bien: Tiene que ser recursiva, si utilizáis algún lenguaje y podéis, C o alguno de sus deribados mejor. No tiene por qué empezar en (0,0) Os pongo mi código, que no me consigue funcionar, a ver si me lleváis hacia la Luz (es C#, Visual Studio 2010), pero para el caso, que es entender el algoritmo, es igual: public void recursiva(int x, int y,int reg) { if (Matriz[x, y].color != Color.Black || Matriz[x, y].marcado == true) { Matriz[x, y].marcado = true; Matriz[x, y].region = reg; //acotamos para no salirnos fuera de rango
if ((x > 0 || (x + 1 < formPrincipal.Cuadro.Image.Width)) &&(y > 0 || (y + 1 < formPrincipal.Cuadro.Image.Height))) { recursiva(x + 1, y, reg); recursiva(x - 1, y, reg); recursiva(x, y + 1, reg); recursiva(x, y + 1, reg); } }
}
|
|
|
En línea
|
La informacion es nuestra arma, el anonimato nuestra armadura
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
private void Recursiva(ref int [,] matriz, int x, int y) { if (x >= 0 && x < matriz.GetLength(0) && y >= 0 && y < matriz.GetLength(1)) { matriz[x, y]++; if (x == matriz.GetLength(0) - 1) { x = 0; y++; } else x++; Recursiva(ref matriz, x, y); } }
Me parece una función recursiva bastante simple. Saludos.
|
|
« Última modificación: 10 Junio 2011, 23:42 pm por Khronos14 »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
De forma recursiva
« 1 2 3 »
Ejercicios
|
:ohk<any>
|
21
|
19,244
|
5 Septiembre 2008, 18:54 pm
por carlitos.dll
|
|
|
Cargar una matriz de forma recursiva[c]
Programación C/C++
|
axeelcs
|
3
|
13,057
|
1 Septiembre 2011, 20:43 pm
por LearningSpanishProgrammer
|
|
|
Recorrido de una Matriz
Java
|
Fabi0lo
|
3
|
4,117
|
26 Octubre 2011, 00:46 am
por s00rk
|
|
|
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
|
oscarpy
|
3
|
8,791
|
9 Abril 2012, 16:23 pm
por Xandrete
|
|
|
Recorrido de matriz diagonal secundaria c++
Programación C/C++
|
SojatDotar
|
4
|
10,828
|
21 Octubre 2015, 04:10 am
por SojatDotar
|
|