import java.util.ArrayList; import java.util.Scanner; public class Mochila { /* * Clase que representa un mochila en la cual se podra cargar Objetos * Atributos: maxPeso, valorTransportado, pesoOcupado, ObjetosDisponibles y ObjetosCargados * Metodos Importantes : * Constructor: Instancia una mochila y le asigna un peso maximo; * cargarMochilaEficientemente: Carga la mochila con los objetos disponibles; * fillMochila: Clase helper de cargarMochilaEficientemente que rellena el ArrayList con los objetos cargados. * */ private int maxPeso; private int valorTransportado = 0; private int pesoOcupado = 0; ArrayList objetosDisponibles; ArrayList objetosCargados; public Mochila(int maxPeso){ this.maxPeso = maxPeso; this.objetosDisponibles = new ArrayList(); this.objetosCargados = new ArrayList(); } public float getMaxPeso() { return maxPeso; } public void setMaxPeso(int maxPeso) { this.maxPeso = maxPeso; } public int getValorTransportado() { return valorTransportado; } public void setValorTransportado(int valorTransportado) { this.valorTransportado = valorTransportado; } public int getPesoOcupado() { return pesoOcupado; } public void setPesoOcupado(int pesoOcupado) { this.pesoOcupado = pesoOcupado; } public void cargarMochila(int value, int peso){ objetosDisponibles.add(new Objeto(value, peso)); } public void imprimirObjDispobibles(){ for(Objeto obj: objetosDisponibles){ System.out.print("[val: "+obj.getValue()+", peso: "+obj.getPeso()+"]-"); } System.out.println(); } public void imprimirObjCargados(){ for(Objeto obj: objetosCargados){ System.out.print("[val: "+obj.getValue()+", peso: "+obj.getPeso()+"]-"); } System.out.println(); } private void fillMochila(String values){ for(int i=0;i j) ? i : j; } private void cargarMochilaEficientemente() { objetosCargados.clear(); pesoOcupado = 0; int[] dp = new int[maxPeso + 1]; String[] flags = new String[maxPeso + 1]; for(int i=0;i