No logro almacenar en el array con 0 y 1 (andamio[]) la solución correcta de mínimo coste (*costeAndamio < coste_total).
He probado con: min 7m, max 8m, y <=25 y me devuelve las piezas 1 y 2, en lugar de la 4, que sería la más barata.
Aquí parte del código (el necesario para entender lo que quiero hacer ):
Código
void insertarPiezas(Pieza piezas[]) { piezas[0].altura = 5; piezas[0].peso = 10; piezas[0].coste = 50; piezas[1].altura = 3; piezas[1].peso = 13; piezas[1].coste = 70; piezas[2].altura = 4; piezas[2].peso = 28; piezas[2].coste = 80; piezas[3].altura = 7; piezas[3].peso = 25; piezas[3].coste = 100; piezas[4].altura = 6; piezas[4].peso = 30; piezas[4].coste = 90; } ***************ESTA DE DEBAJO ES LA PARTE QUE ME INTERESA Y NO FUNCIONA CORRECTAMENTE EN EL IF...******************** void actualizarSolucion(int solucion_parcial[], Pieza piezas[], int andamio[],int *alturaAndamio, int *pesoAndamio, int *costeAndamio, int alturaMin) { int altura_total = 0, peso_total = 0, coste_total = 0; for(int i = 0; i < NUM_PIEZAS; i++) { if(solucion_parcial == 1){ altura_total += piezas.altura; peso_total += piezas.peso; coste_total += piezas.coste; } } if(alturaMin <= altura_total && *costeAndamio <= coste_total){ minimoCoste(solucion_parcial, andamio, altura_total, peso_total, coste_total, *alturaAndamio, *pesoAndamio, *costeAndamio); *alturaAndamio = altura_total; *pesoAndamio = peso_total; *costeAndamio = coste_total; } } int minimoCoste(int solucion_parcial[], int andamio[], int altura_total, int peso_total, int coste_total, int *alturaAndamio, int *pesoAndamio, int *costeAndamio) { for(int i = 0; i < NUM_PIEZAS; i++) { andamio = solucion_parcial; } return andamio; }
Y MUCHÍSIMAS GRACIAS!!!