public class BilletesMonedas { // calcula public void calcula(int []den, int []res, int c) { if (den.length != res.length) { System.out.println("Error los arreglos no son del mismo tamano"); System.exit(1); } // Inicializacion int i, xc = c; int []u = new int[res.length]; // Ciclo sobre cada una de las denominaciones for (i = 0; i < den.length; i++) { // ciclo sobre cada una de las cantidades que satisfacen la denominacion y la restriccion while (xc >= den[i] && u[i] < res[i]) { xc -= den[i]; u[i]++; } } // visualizacion System.out.println("cantidad:" + c); for (i = 0; i < den.length; i++) { System.out.println("en: " + den[i] + " con la restriccion de: " + res[i] + " se usaron: " + u[i]); } System.out.println("sobra: " + xc); // prueba int r = 0; for (i = 0; i < den.length; i++) r += den[i] * u[i]; r += xc; System.out.println("Prueba: " + r); } // Ejemplito de uso ... public static void main(String[] args) { int []d = {1000, 500, 100}; int []r = {6, 4, 100}; BilletesMonedas c = new BilletesMonedas(); c.calcula(d, r, 7401); } };