S
OLUZIONI SOLUZIONI2004
Numero minimo di verghe
Carlo, ha un amico che lavora in un negozio di
edilizia che spesso si trova a dover soddisfare richieste del
tipo:" mi prepari n1 pezzi di verga metallica di
lunghezza l1, n2 pezzi di verga
di lunghezza l2, ...,nk di
lunghezza lk". Naturalmente
questi pezzi vengono tagliati da verghe di lunghezza standard, diciamo L (ad
es. 600 cm) e in generale l1, l2,
...,lk, che sono minori di L, non sono tutti
sottomultipli di L e, qualora alcuni di essi lo siano, il numero di pezzi
di lunghezza li ricavabili da una verga (L/li)
potrebbe non essere sottomultiplo di ni, come
pure il numero di pezzi di lunghezza lj ricavabili da
una verga potrebbe non esserlo di nj, e così
via .
Il suo problema consiste nel trovare quante
verghe occorrono per soddisfare le richieste, in modo da ridurre gli scarti
al minimo e quindi, ovviamente, i costi.
(PUNTEGGIO MASSIMO: 10 PUNTI)
>> REGISTRATI SUL FORUM E DISCUTI LE SOLUZIONI DEI LETTORI <<
La soluzione di Luigi Bernardini (PUNTI 10)
La soluzione di Maurizio Castellan (PUNTI 10)
Caro sig. Scoleri,
SOLUZIONE DEL PROBLEMA DI MARZO 2004
Dati/definizioni:
L = lunghezza standard della verga prodotta
l1, l2,...,lm = lunghezza del pezzo di verga metallica richiesta dal cliente
n1, n2, ... , nm = numero di sbarre per ogni tipo (l)
m = numero di tipi di sbarre (l) richieste dal cliente
sci = scarto corrispondente alla prova i
N = numero di sbarre di verga utilizzate per soddisfare le richieste del cliente
C; SC; G = numeri di passaggio
i; r; j = contatori
-------------------------
DIAGRAMMA DI FLUSSO:
1) Ordino per ordine decrescente gli l: l1 > l2 > l3 > ... > lm
2) i = 1, m
( sci = L
r = i, m
( C = nr
sci - lr >= 0 & C > 0? { C = C - 1; sci = sci - lr}
)
)
C = sc1
j = 1, m
( scj < C? {C = scj; G = j})
SC = L
i = G, m
( SC - li >= 0 & ni > 0? { ni = ni - 1; SC = SC -li}); N = N + 1
SC = 0
i = 1, m
(ni > 0? { SC = 1})
SC = 0? {END}
GOTO 2