Advertisement
aveenger17

Mochila

Feb 27th, 2013
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.33 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Mochila {
  4.     Vector<Elemento> almacen = new Vector<Elemento>();
  5.     Vector<Elemento> mochila = new Vector<Elemento>();
  6.     final int  pesoMaximo;
  7.  
  8.     public Mochila(int pm) {
  9.         pesoMaximo = pm;
  10.         cargarDatos();
  11.     }
  12.  
  13.     public void cargarDatos() {
  14.         almacen.add(new Elemento("Objeto 1",        67, 47));
  15.         almacen.add(new Elemento("Objeto 2",       15,  43));
  16.         almacen.add(new Elemento("Objeto 3", 33,  44));
  17.         almacen.add(new Elemento("Objeto 4",  75,  35));
  18.         almacen.add(new Elemento("Objeto 5",    81,  33));
  19.         almacen.add(new Elemento("Objeto 6",      44,  36));
  20.         almacen.add(new Elemento("Objeto 7",      17,  24));
  21.         almacen.add(new Elemento("Objeto 8",    72,  49));
  22.         almacen.add(new Elemento("Objeto 9", 91,  41));
  23.         almacen.add(new Elemento("Objeto 10",     16,  29));
  24.  
  25.    }
  26.  
  27.      public void mostrarMochila() {
  28.         int pesoMochila=0;
  29.         int valorMochila=0;
  30.         System.out.println();
  31.         for(Elemento e: mochila) {
  32.             System.out.println(e);
  33.             pesoMochila+=e.peso;
  34.             valorMochila+=e.valor;
  35.         }
  36.         System.out.println("------");
  37.         System.out.printf("Peso  = %d %n", pesoMochila);
  38.         System.out.printf("Ganancia = %d %n", valorMochila);
  39.     }
  40.    
  41. public void resolverProblema() {
  42.     // Comparador para ordenar los elementos del almacen por valor
  43.     Comparator cmp = new Comparator<Elemento>() {
  44.         public int compare(Elemento x, Elemento y) {
  45.             return (int) (x.valor/x.peso - y.valor/y.peso);
  46.         }
  47.     };
  48.     Collections.sort(almacen,cmp);  // ordena usando el comparador anterior
  49.     Collections.reverse(almacen);   // reversa el orden de los elementos
  50.  
  51.     double pesoMochila=0;
  52.     int    posicion=0;
  53.     while(pesoMochila<pesoMaximo && posicion < almacen.size()) {
  54.         Elemento tmp = almacen.get(posicion);
  55.         if(pesoMochila + tmp.peso <= pesoMaximo) {
  56.             mochila.add(tmp);
  57.             pesoMochila+=tmp.peso;
  58.         }
  59.         posicion++;
  60.     }
  61. }
  62.    
  63.     public static void main(String[] args) {
  64.         // Crear una mochila que soporta hasta 150 Kg. de peso
  65.         ProblemaMochila pm = new ProblemaMochila(150);
  66.         pm.resolverProblema();
  67.         pm.mostrarMochila();
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement