#include <iostream> using namespace std;
int min(int,int);
int main(int argc, char* argv[]) { int* moneda; // Monedas disponibles int** tabla; // Tabla, matriz int i,j; cout << "Cantidad de monedas diferentes a poder utilizar: "; int cant = 0; cin >> cant; if(cant<1) exit(0); moneda = new int[cant]; if(!moneda) exit(0); cout << "Ingrese las monedas de menor a mayor" << endl; for(i=0; i < cant; i++) { // Ingreso valores de monedas cout << "Ingrese el valor de la " << i+1 <<"a moneda: "; cin >> moneda[i]; if(moneda[i]<1) exit(0); } cout << "Ingrese la cantidad de $ a calcular: "; cin >> cant; if(cant<1) exit(0); tabla = new int *[sizeof(moneda)/4]; for(i=0; i<(sizeof(moneda)/4); i++) tabla[i] = new int[cant]; // Llenamos valores obvios for(i=0; i<(sizeof(moneda)/4); i++) tabla[i][0] = 0; // Llenamos la tabla for(i=0; i<(sizeof(moneda)/4); i++) { for(j=0; j<cant; j++) { if(i==0) if(j<moneda[0]) *tabla[0,j] = 0; // No se puede else tabla[i,j] = 1+(tabla[i,(j-moneda[i])]); else if(j<moneda[i]) tabla[i,j] = tabla[i-1,j]; else tabla[i,j] = min(*tabla[i-1,j], tabla[i,j-moneda[i]]); } } cout << endl << endl << " |"; for(j=0; j<cant+1; j++) cout << j << "|"; cout << endl; for(i=0; i<(sizeof(moneda)/4); i++) { cout << moneda[i] << "- "; for(j=0; j<cant; j++) { cout << "|" << tabla[i,j]; } cout << endl; } fflush(stdout); fflush(stdin); cin.get(); return 0; }
|