|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - carola_mach
Páginas: [1]
1
« en: Sábado 23 de Mayo de 2009, 04:00 »
codigo arraylist con merge sort rapido y facil de entender
2
« en: Viernes 22 de Mayo de 2009, 00:22 »
quien tiene el codigo de lamochila
3
« en: Miércoles 26 de Noviembre de 2008, 04:05 »
esto tengo en codigo
nose como empezarlo para q se explique bien el codigo public static final int agua = -1; public static final int libre = 1; public static final int fueraPantano = -2; public static final int enteroMaximo = 999999; public static final int energia[][] = { { 7, 6, 5, 6, 7 }, { 6, 3, 2, 3, 6 }, { 5, 2, 0, 2, 5 }, { 6, 3, 2, 3, 6 }, { 7, 6, 5, 6, 7 } }; public static void main(String[] args) { int c = 0, r = 0, cs = 0, rs = 0, ct = 0, rt = 0, b; int c1, r1, c2, r2; int i, j, k; int[][] pantano = null; int[][] costo = null; Scanner in = new Scanner(System.in); // leer las dimensiones del pantano c = in.nextInt(); r = in.nextInt(); while (c > 0) { // crear el pantano y matriz de costos pantano = new int[r + 4][c + 4]; costo = new int[r + 4][c + 4]; // indicar que la fila 0 y columa 0 // estan fuera del pantano for (i = 0; i < c + 4; i++) pantano[0] = pantano[1] = fueraPantano; for (i = 0; i < r + 4; i++) pantano[0] = pantano[1] = fueraPantano; for (i = 2; i < c + 4; i++) pantano[r + 2] = pantano[r + 3] = fueraPantano; for (i = 2; i < r + 4; i++) pantano[c + 2] = pantano[c + 3] = fueraPantano; // Marcar las celdas del pantano como libres // y los costos como un entero grande for (i = 2; i < r + 2; i++) { for (j = 2; j < c + 2; j++) { pantano[j] = libre; costo[j] = enteroMaximo; } } // leer el origen y el destino cs = in.nextInt(); rs = in.nextInt(); ct = in.nextInt(); rt = in.nextInt(); // leer el numero de zonas acuosas b = in.nextInt(); for (i = 0; i < b; i++) { // leer las cordenadas de la region c1 = in.nextInt(); r1 = in.nextInt(); c2 = in.nextInt(); r2 = in.nextInt(); c1 += 1; c2 += 1; r1 += 1; r2 += 1; for (k = r1; k <= r2; k++) { for (j = c1; j <= c2; j++) { pantano[k][j] = agua; } } } cs++; rs++; ct++; rt++; // ver(pantano,r, c); // ver(costo,r, c); dijkstra(pantano, costo, rs, cs, rt, ct); if (costo[rt][ct] < enteroMaximo) System.out.println(costo[rt][ct]); else System.out.println("Impossible"); c = in.nextInt(); r = in.nextInt(); } } } public static void dijkstra( int[][] pantano, int[][] costo, int rs, int cs,int rt, int ct) { int rv, cv; int i, j; Nodo filcol; PriorityQueue<Nodo> cp = new PriorityQueue<Nodo>(); costo[rs][cs] = 0; rv = rs; cv = cs; cp.add(new Nodo(0, rs, cs)); while (!cp.isEmpty()) { filcol = cp.remove(); rv = filcol.fila; cv = filcol.col; for (i = -2; i < 3; i++) { for (j = -2; j < 3; j++) { if (pantano[rv + i][cv + j] == libre) { if (costo[rv + i][cv + j] > (costo[rv][cv] + energia[i + 2][j + 2])) { costo[rv + i][cv + j] = costo[rv][cv] + energia[i + 2][j + 2]; cp.add(new Nodo(costo[rv + i][cv + j], rv + i, cv + j)); } } } } } } PriorityQueue<Nodo> cp = new PriorityQueue<Nodo>(); La clase nodo se deni como sigue: o class Nodo implements Comparable<Nodo> { int costo, fila, col;
public Nodo(int costo, int fila, int col) { this.costo = costo; this.fila = fila; this.col = col; } public int compareTo(Nodo other) { return costo - other.costo; } }
4
« en: Miércoles 19 de Noviembre de 2008, 23:55 »
lala cierre tema
5
« en: Domingo 9 de Noviembre de 2008, 17:14 »
Containers En el terminal de carga de un puerto se deben almacenar grandes containers, los que eventualmente son cargados en un barco para ser transportados. Los containers que llegan al puerto por tren o cami ́n, sono apilados en el terminal hasta ser embarcados. Los barcos cargan una gran cantidad de containers. El tiempo de carga de un barco depende de la ubicacion en el terminal de carga, de los containers que deben ser subidos. El tiempo de carga aumenta si el container que se debe subir al barco no está al tope de una pila, y para poder subirlo al barco hay que primero sacar todos los containers que esten sobre él. El terminal de carga necesita un plan para apilar los containers, de modo tal de minimizar los tiempos de carga de los barcos. El plan debe permitir cargar cada barco, usando sólo containers que se encuentran al tope de alguna pila, minimizando la cantidad de pilas necesarias en el terminal. En este problema, se conoce de antemano el orden en que los barcos deben ser cargados, y el orden en que los containers llegan al terminal. Cada barco es representado por una letra mayúscula entre A y Z (inclusive), y los barcos son cargados en orden alfabético. Cada container esta ́ etiquetado con una letra mayáscula, que indica en que ́ barco debe ser cargado. No hay lımite a la cantidad de containers que pueden ser puestos en una misma pila. Entrada La entrada contiene múltiples casos de prueba. Cada caso consiste de una sola lınea, que contiene entre 1 y 1000 letras mayu ́sculas, representando el orden de llegadoa de un grupo de containers. Por ejemplo, la
lınea ABCA indica que el primer container que llega debe ser cargado en el barco A, el segundo en el barco B, el tercero en el barco C, el ultimo en el barco A. Cuando estos containers han llegado al terminal, deben ser cargados en los barcos. El primer barco en ser cargado es el A, el segundo es el B, y así sucesivamente. Una lınea con la palabra end sigue al ultimo caso de prueba, para indicar el fin de la entrada. ́ Un ejemplo de entrada es la siguiente: A CBACBACBACBACBA CCCCBBBBAAAA end Estos datos deben ser leıdos desde la entrada estándar, sin menues ni opciones. Salida Para cada caso de prueba de la entrada, su algoritmo debe imprimir el número del caso, seguido de la cantidad mınima de pilas que se requieren armar en el terminal de carga, antes de empezar a cargar los barcos, de modo tal de minimizar el tiempo de carga. Para la entrada de ejemplo, la salida debiera ser: Caso 1: 1 Caso 2: 3 Caso 3: 1
Páginas: [1]
|
|
|