elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:33  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Littlehorse)
| | |-+  recorrido de una matriz de forma recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: recorrido de una matriz de forma recursiva  (Leído 1,655 veces)
dark_headhunter

Desconectado Desconectado

Mensajes: 204


solo tu eres dueño de tu destino


Ver Perfil
recorrido de una matriz de forma recursiva
« en: 10 Junio 2011, 07:22 »

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 Desconectado

Mensajes: 285


A lie is a lie


Ver Perfil WWW
Re: recorrido de una matriz de forma recursiva
« Respuesta #1 en: 10 Junio 2011, 14:49 »

No dices en que lenguaje así que te lo pongo en Pascal:

Código
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 Desconectado

Mensajes: 632


Divide y vencerás


Ver Perfil
Re: recorrido de una matriz de forma recursiva
« Respuesta #2 en: 10 Junio 2011, 16:18 »

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 Desconectado

Mensajes: 204


solo tu eres dueño de tu destino


Ver Perfil
Re: recorrido de una matriz de forma recursiva
« Respuesta #3 en: 10 Junio 2011, 19:17 »

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:

Código:
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 Desconectado

Mensajes: 285


A lie is a lie


Ver Perfil WWW
Re: recorrido de una matriz de forma recursiva
« Respuesta #4 en: 10 Junio 2011, 23:39 »

Código
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 por Khronos14 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
De forma recursiva « 1 2 »
Ejercicios
ohk 21 5,839 Último mensaje 5 Septiembre 2008, 18:54
por carlitos.dll
Cargar una matriz de forma recursiva[c]
Programación C/C++
axeelcs 3 1,548 Último mensaje 1 Septiembre 2011, 20:43
por LearningSpanishProgrammer
como visualizar matriz en forma de tabla? (Solucionado)
Programación C/C++
;c1v!c 5 931 Último mensaje 8 Septiembre 2011, 18:00
por ;c1v!c
Recorrido de una Matriz
Java
Fabi0lo 3 921 Último mensaje 26 Octubre 2011, 00:46
por s00rk
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
oscarpy 3 451 Último mensaje 9 Abril 2012, 16:23
por Xandrete
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines