Problema Rucsacului3

2,116 views
2,009 views

Published on

Published in: Health & Medicine
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,116
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Problema Rucsacului3

  1. 1. Problema Rucsacului Elev ă :Reus Raluca
  2. 2. <ul><li>Se da un rucsac de capacitate, </li></ul><ul><li>volum si un numar de n obiecte specificandu-se volumul obiectelor.Se cere un program care sa determine varianta de introducere a obiectelor in rucsac astfel incat sa incapa cat mai multe obiecte. </li></ul>
  3. 3. Exemplu N=5; Volum=10kg; 2 3 4 5 7 5 1 2 2 1 3 5 5 3 4 3 4 Greutate Nr. obiect
  4. 4. Ob 1 Ob 2 Ob 3 Ob 4 Ob 5 Volumul disponibil al rucsacului este: 10 kg 8 kg 5 kg 1 kg Greutatea obiectului este prea mare
  5. 5. Algoritmul de rezolvare: <ul><li>Pas1:Citirea volumelor fiecarui obiect şi a volumului rucsacului. </li></ul><ul><li>Pas2:Iniţializăm obiectele. </li></ul><ul><li>Pas3:Se ordonează obiectele crescator in functie de volumul lor. </li></ul><ul><li>Pas4:Se inţializează volumul disponibil cu volumul obiectului. </li></ul><ul><li>Pas5:Se verifica dacă fiecare obiect incape in rucsac astfel: </li></ul><ul><ul><li>Daca volumul obiectului e mai mic sau egal decat volumul disponibil a rucsacului atunci acesta incape in rucsac si din volumul disponibil a rucsacului scădem volumul obiectului. </li></ul></ul><ul><li>Pas 6 :Dacă a rămas o zonă din rucsac neocupată atunci afişăm volumul rămas neocupat, în caz contrar înseamnă că nu am putut introduce nici un obiect în rucsac </li></ul>
  6. 6. Implementare <ul><li>max_ob –nr maxim de obicte care pot fi puse in rucsac </li></ul><ul><li>n-nr de obiecte. </li></ul><ul><li>v_dis-volumul disponibil din rucsac. </li></ul><ul><li>o-obiectele. </li></ul><ul><li>Greutate-greutatea fiecarui obiect. </li></ul>
  7. 7. Algoritm <ul><li>Program rucsac : </li></ul><ul><li>Const max_ob =100; </li></ul><ul><li>Type vector=array [1..100] of integer ; </li></ul><ul><li>Var volum,n,i:integer; </li></ul><ul><li>greuate :array[1..max_ob] of integer; </li></ul><ul><li>Procedure citeste: </li></ul><ul><li>Begin </li></ul><ul><li>Repeat (‘volumul rucsacului’); </li></ul><ul><li>readln(volum); </li></ul><ul><li>Until volum>0; </li></ul><ul><li>Repeat </li></ul><ul><li>write(‘nr.obiectelor’);readln(n); </li></ul><ul><li>Until (n>0) and (n<=max_ob); </li></ul><ul><li>For i:=1 to n do </li></ul><ul><li>Repeat </li></ul><ul><li>write(‘greutate[‘,I,’]=‘); </li></ul><ul><li>readln(greutate); </li></ul><ul><li>Until greutate[i]>0; </li></ul><ul><li>writeln; </li></ul><ul><li>End; </li></ul>
  8. 8. <ul><li>Procedure rezolva; </li></ul><ul><li>Var a:array[1..ob_max] of integer; </li></ul><ul><li>V_dis,aux,i:integer; </li></ul><ul><li>Ok:boolean; </li></ul><ul><li>Begin </li></ul><ul><li>For i:1 to n do o[i]:=i; </li></ul><ul><li>t:=1; </li></ul><ul><li>Repeat </li></ul><ul><li>ok:=true; </li></ul><ul><li>For i:=1 to n-t do </li></ul><ul><li>If greutate[o[i]]>greutate[o[i]] then </li></ul><ul><li>begin </li></ul><ul><li>aux:=o[i]; </li></ul><ul><li>o[i]:=o[i+1]; </li></ul><ul><li>o[i+1]:=aux; </li></ul><ul><li>ok:=false; </li></ul><ul><li>end; </li></ul><ul><li>t:=t+1; </li></ul><ul><li>Until ok; </li></ul>
  9. 9. <ul><li>Write(‘continutul posibil a rucsacului este’); </li></ul><ul><li>v_dis:=volum; </li></ul><ul><li>For i:=1 to n do </li></ul><ul><li>if greutate [o[i]]<=v_dis then begin </li></ul><ul><li>v_dis:=v_dis-greutate[o[i]]; </li></ul><ul><li>writeln(‘obictul’,o[i],’de volum’,greutate[o[i]]); </li></ul><ul><li>end; </li></ul><ul><li>If v_dis<volum then </li></ul><ul><li>Writeln(‘volum ramas neocupat=‘,v_dis) </li></ul><ul><li>else </li></ul><ul><li>Writeln(‘nu incape nici un obiect in rucsac’); </li></ul><ul><li>Writeln; </li></ul><ul><li>End; </li></ul><ul><li>Begin </li></ul><ul><li>Citeste; </li></ul><ul><li>Rezolva; </li></ul><ul><li>Readln; </li></ul><ul><li>End. </li></ul>

×