Ga naar hoofdinhoud

10.7 Bouwsteen 4 — vul de hele tabel

Leerdoel: je voegt een buitenste lus toe die alle rijen invult. Met de bouwstenen van pagina 5 en 6 wordt dit één regel werk extra.

Wat we willen

De tabel volledig invullen. Rij 0 is al 0-vector (vanaf pagina 5), rij 1 t/m n vullen we via vul_rij uit pagina 6.

for i in range(1, n + 1):
vul_rij(tabel, items, i, capaciteit)

Vier woorden meer dan vorige stap.

Waarom range(1, n + 1)?

  • Start bij 1: rij 0 is al klaar (basisgeval).
  • Eind bij n + 1: we willen ook rij n (de laatste rij) invullen, en range is exclusief aan de bovenkant.

Specificatie

  • Input: tabel, items, capaciteit.
  • Output: niets. We muteren tabel ter plekke.

Voorspel

We runnen vul_volledige_tabel op het image-voorbeeld. Wat staat er straks in tabel[5][11]?

Antwoord

40 — de beste totaalwaarde voor 5 items binnen W=11.

Dat is de eindcel die je op pagina 02 met de hand uitrekende.

Bouw zelf en test

Python
Code-omgeving wordt voorbereid…
Tip
def vul_volledige_tabel(tabel, items, capaciteit):
n = len(items)
for i in range(1, n + 1):
vul_rij(tabel, items, i, capaciteit)

Drie regels. Geen subtiliteiten — gewoon vul_rij aanroepen voor elke rij in stijgende volgorde.

Onderzoek

Print de tabel rij voor rij om hem visueel te controleren met pagina 02:

Python
Code-omgeving wordt voorbereid…
Verwachte uitvoer
0 1 2 3 4 5 6 7 8 9 10 11
i=0: 0 0 0 0 0 0 0 0 0 0 0 0
i=1: 0 1 1 1 1 1 1 1 1 1 1 1
i=2: 0 1 6 7 7 7 7 7 7 7 7 7
i=3: 0 1 6 7 7 18 19 24 25 25 25 25
i=4: 0 1 6 7 7 18 22 24 28 29 29 40
i=5: 0 1 6 7 7 18 22 28 29 34 35 40

Identiek aan de hand-uitgevulde tabel uit pagina 02. ✓

Door naar stap 8: het complete algoritme →.