Informatika gyűjtemény

NézetNyomtat

Megoldás

Adatszerkezet

Egy konténerről/konténerkupacról 3 fontos dolgot kell tudnunk: mekkora a mérete (kupac esetén a legfelső doboz mérete), mozgatható-e (ha kupac akkor már nem), kész van-e (olyan kupac amire már nem tehetünk több konténert). Ezeket célszerű listában tárolni, mert könnyen kereshetünk benne, és könnyű belőle kivenni.

Algoritmus

Kiválasztjuk jobbról az első legnagyobb nem kész konténert/konténerkupacot. Nyílván erre szeretnénk még tenni konténert. Ha nem találunk ilyet, akkor kész az algoritmus megszámoljuk, hogy mennyi konténer maradt, és kivonjuk az eredeti darabszámból.
Tőle balra lévő konténerek közül (hiszen csak őket tehetjük rá, mert a kar balról jobbra mozog), kiválasztjuk a legnagyobb még rátehető (tehát a mérete kisebb) mozgatható konténert, ami a lehető legközelebb van hozzá. Ha nincs ilyen, akkor az előzőekben kiválasztott konténert/konténerkupacot megjelöljük, hogy kész, így őt legközelebb az előző lépésben nem vizsgáljuk.
A kiválasztott konténert töröljük a listából; a legelsőnek kiválasztott konténer méretét átírjuk a most kiválasztottéra (hiszen ő kerül a kupac tetejére), illetve beállítjuk, hogy az így létrejött konténerkupac, már biztosan nem mozgatható.
Kezdjük újból az egészet.

Kódok

Kriván Bálint (C#): kb_kontener.cs