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


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Programación algorítmica: unos problemillas
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Programación algorítmica: unos problemillas  (Leído 5,138 veces)
ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: Programación algorítmica: unos problemillas
« Respuesta #15 en: 25 Septiembre 2008, 19:44 »

¿Matriz de adyacencia? No es de grafos el problema, es de DP y se resuelve como expliqué en el post anterior, supongo que pensarías en BFS o Dijkstra, pero va de dinámica.

Un saludo de ghastlyX ;)


En línea
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.334

he vuelto :)


Ver Perfil WWW
Re: Programación algorítmica: unos problemillas
« Respuesta #16 en: 26 Septiembre 2008, 07:19 »

¿Matriz de adyacencia? No es de grafos el problema, es de DP y se resuelve como expliqué en el post anterior, supongo que pensarías en BFS o Dijkstra, pero va de dinámica.

Un saludo de ghastlyX ;)

en realidad se me ocurrió warshall pero apenas lo entiendo :¬¬ y en 6 horas tengo un control de lectura! :laugh:


En línea

Ojo por ojo, y el mundo acabará ciego.
ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: Programación algorítmica: unos problemillas
« Respuesta #17 en: 26 Septiembre 2008, 17:07 »

Pues no te sé decir si por Floyd-Warshall funcionaría, pero si no me equivoco creo que mediante ese algoritmo tienes complejidad cúbica, tal y como he explicado sólo cuadrática. Olvida algoritmos de búsquedas de caminos en grafos para este problema. De hecho, olvida los grafos para este problema, se puede resolver sin haber visto un grafo en la vida.

Un saludo de ghastlyX ;)
En línea
juancho77


Desconectado Desconectado

Mensajes: 455


rie con demencia


Ver Perfil
Re: Programación algorítmica: unos problemillas
« Respuesta #18 en: 20 Noviembre 2008, 04:55 »

Citar
Creamos una matriz de carácteres para guardar el mapa y otra del mismo tamaño para almacenar números. Entonces simplemente hay que recorrer dicha matriz: si en la posición hay una mina el número lo ponemos a un máximo declarado antes, de lo contrario será el mínimo entre el de arriba y las dos diagonales de arriba + 1. No hace falta decir que la primera fila ha de valer cero en todas las casillas excepto las que tengan minas. La solución final es el mínimo de todas las posiciones de la última fila.

Ya que estamos. Me tome el trabajo de pasar el algortimo a Java  :-*
Código
import java.io.*;
import java.util.Random;
public class minas {
   public static void main() throws Exception {
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       char[][] caracteres;
       int [][] resultado;
       System.out.print("Ingrese cantidad de filas:");
       int filas=Integer.parseInt(br.readLine());
       System.out.print("Ingrese cantidad de columnas:");
       int columnas=Integer.parseInt(br.readLine());
       caracteres=new char[filas][columnas];
       resultado=new int[filas][columnas];
       Random rnd=new Random();
       for (int i=0; i<filas; i++)
       {
           for(int j=0;j<columnas;j++)
           {
               //genero la tabla/////////////
               int aleat=rnd.nextInt(2);
               if (aleat==1)
                   caracteres[i][j]='M';
                   else caracteres[i][j]='L';
               //////////////////////////////
               //
               if (caracteres[i][j]=='M')
                   resultado[i][j]=99;
               else //si esta libre
               {
                   if (i==0) //si es la primera fila
                       resultado[i][j]=0;
                   else //en cualquier otro caso
                   {
                       if ((j>0)&&(j<columnas-1))
                           resultado[i][j]=min(resultado[i-1][j-1]+1,resultado[i-1][j],resultado[i-1][j+1]+1);
                       else if (j==0)
                           resultado[i][j]=min(resultado[i-1][j],resultado[i-1][j+1]+1,99);
                            else
                              resultado[i][j]=min(resultado[i-1][j],resultado[i-1][j-1]+1,99);
                           }          
                       }      
           }
       }
       int menor=99;
       for (int j=0; j<columnas;j++)
           if (resultado[filas-1][j]<menor)
               menor=resultado[filas-1][j];
       if (menor==99)
           System.out.println("Yum Yum");
           else System.out.println(menor);
}
   public static int min(int num1, int num2, int num3){
       int menor=num1;
       if (num2<num1)
           menor=num2;
       if (num3<menor)
           menor=num3;
       return menor;
   }
}
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda algorítmica y de Java
Java
Felipe_Henriquez 4 603 Último mensaje 12 Enero 2012, 02:18
por Felipe_Henriquez
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines