7 mar. 2009

Un Pequeño Algoritmo Recursivo :)

Este es un pequeño code que realice para un post del foro.elhacker.net en la sección de Programación-Programación General-Ejercicios donde faltaba por solucionar el siguiente problema:

Cita de ohk: Programar un algoritmo recursivo que permita resolver la siguiente matriz:

1 1 1 1 1
1 2 2 2 2
1 2 4 4 4
1 2 4 8 8
1 2 4 8 16

Pues bien aca comparto la solución que hice para el problema (Java):



public class MatrizRecursividad {

  private static int a=0, aux=1, b=0;
  private static int[][] matriz = new int[6][6];

  public static void main(String[] args) {

      llenarMatriz(matriz, a, b);
      imprimir();
  }

  public static void llenarMatriz(int matriz[][], int i, int j){

      if(j > matriz.length -1){
          i++;
          j=0;
          aux++;
      }
      if(i <matriz.length){

          if(i==(aux-1) && j >= (aux-1)){
              if(i==0)
                  matriz[i][j] = aux;
              else
                  matriz[i][j] = matriz[i][i-1]*2;
              llenarMatriz(matriz, i , j+1);
          }
          else{
              if(j==0)
                  matriz[i][j] = j+1;
              else
                  matriz[i][j] = matriz[i-1][j];
              llenarMatriz(matriz, i, j+1);
          }
      }
  }

  public static void imprimir(){

      for(int i=0; i< matriz.length; i++){
          for(int j=0; j< matriz.length; j++){
              System.out.print(matriz[i][j] + " ");
          }
          System.out.print("\n");
      }
  }
}

Cualquier duda respecto al código no duden en preguntar :).

Link del post: aquí

1 comentarios:

Ky.Hell dijo...

como logroo hacer esta matriz recursivamente en javaa

*matriz [n*(n+1)]:

1 17 13 9 5
6 2 18 14 10
11 7 3 19 15
16 12 8 4 20

el llenado d esta matriz es asi...(1.1)...(2.2)...(3.3)...(4.4) para luego saltarsee a la siguiente casilla desocupada (1.5)...(2.1)..(3.2)...y asi sucesivamente ???