Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Mochila {
- Vector<Elemento> almacen = new Vector<Elemento>();
- Vector<Elemento> mochila = new Vector<Elemento>();
- final int pesoMaximo;
- public Mochila(int pm) {
- pesoMaximo = pm;
- cargarDatos();
- }
- public void cargarDatos() {
- almacen.add(new Elemento("Objeto 1", 67, 47));
- almacen.add(new Elemento("Objeto 2", 15, 43));
- almacen.add(new Elemento("Objeto 3", 33, 44));
- almacen.add(new Elemento("Objeto 4", 75, 35));
- almacen.add(new Elemento("Objeto 5", 81, 33));
- almacen.add(new Elemento("Objeto 6", 44, 36));
- almacen.add(new Elemento("Objeto 7", 17, 24));
- almacen.add(new Elemento("Objeto 8", 72, 49));
- almacen.add(new Elemento("Objeto 9", 91, 41));
- almacen.add(new Elemento("Objeto 10", 16, 29));
- }
- public void mostrarMochila() {
- int pesoMochila=0;
- int valorMochila=0;
- System.out.println();
- for(Elemento e: mochila) {
- System.out.println(e);
- pesoMochila+=e.peso;
- valorMochila+=e.valor;
- }
- System.out.println("------");
- System.out.printf("Peso = %d %n", pesoMochila);
- System.out.printf("Ganancia = %d %n", valorMochila);
- }
- public void resolverProblema() {
- // Comparador para ordenar los elementos del almacen por valor
- Comparator cmp = new Comparator<Elemento>() {
- public int compare(Elemento x, Elemento y) {
- return (int) (x.valor/x.peso - y.valor/y.peso);
- }
- };
- Collections.sort(almacen,cmp); // ordena usando el comparador anterior
- Collections.reverse(almacen); // reversa el orden de los elementos
- double pesoMochila=0;
- int posicion=0;
- while(pesoMochila<pesoMaximo && posicion < almacen.size()) {
- Elemento tmp = almacen.get(posicion);
- if(pesoMochila + tmp.peso <= pesoMaximo) {
- mochila.add(tmp);
- pesoMochila+=tmp.peso;
- }
- posicion++;
- }
- }
- public static void main(String[] args) {
- // Crear una mochila que soporta hasta 150 Kg. de peso
- ProblemaMochila pm = new ProblemaMochila(150);
- pm.resolverProblema();
- pm.mostrarMochila();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement