Grådigheds algoritme
Jeg skal have skrevet en algoritme, som kan løse følgende problemMan har f.eks. et rør på længden L, som skal skæres op i længderne L1,L2,L3,Li, hvor L1>L2>L3>Li med X1 antal af L1 og X2 antal af L2 og Xi antal af Li.
Algoritmen skal fungere som en "grådigheds algoritme", som først laver alle L1 derefter L2 og L3 og Li. Hvis Hele røret ikke bliver brugt til L1 skal resten af røret bruges til at lave den Li, hvor der bliver mindst tilbage af røret.
Et simpelt eksempel kunne se sådan ud
L=400
L1=210 og X1=10
L2=190 og X2=10
L3=150 og X3=20
L4=60 og X4=25
L5=30 og X5=65 30 15
Her skal algoritmen altså først lave 10 stk. L1 og bruges resten, 10 stk (400-210) på L2. Derefter skal den lave 20 stk. L3 og bruge de sidste 10 stk. på 100 til at lave 30 stk. L5.
Derefter skal den lave 25 stk. L4 og bruge resten, 4 stk. på 40 og 1 stk. på 340 til at lave 4 og 11 stk. L5. Herefter skal den lave de sidste L5.
Jeg har prøvet at stille det matematisk op og håber ikke at det forvirrer mere end det gavner.
Xii er det antal som knytter sig til L1;X1 ...etc. Grunden til at jeg runder ned er logisk nok at man ikke kan skære op i halve længder.
((X11 RUND.NED)*L1/L) <= L Hvis resten tilbage skal det bruges til X22 RUND.NED*L2/((L-(X11 Rund.NED*L1)<= ((X11 RUND.NED)*L1/L) <= L og hvis rest skal det igen bruges til X RUND.NED*L3/((L-(X RUND.NED*L2)<= X22 RUND.NED*L2/((L-(X11 Rund.NED*L1)<= ((X11 RUND.NED)*L1/L) <= L etc....
Håber at nogen kan hjælpe mig med at skrive det i VBA ud fra ovenstående beskrivelse.
