43. Gombaszedés Kováts László
Adatszerkezet 3 féle gomba 3 lista Lilapereszke Rókagomba Csiperke
Algoritmus Fájlból beolvasás Feltételek alapján gombaszedés Fájlba (és monitorra) eredmény írás
Fájlból beolvasás N darab adatot, ami az első sorban adott Első betű alapján (C,L,R) a megfelelő listába helyezzük a súlyokat (Csiperke, Lilapereszke, Rókagomba)
Feltételek alapján gombaszedés I. Csökkenő sorba rendezzük a listákat súly szerint
Feltételek alapján gombaszedés II. Ha van Csiperke akkor Lilapereszkét nem vizsgálunk, tehát csak Rókagomba és Csiperke vizsgálata Ha van Rókagomba, akkor a nagyobbat tesszük a zsákba ha belefér… ha nem akkor kidobjuk a listából zsákba tétel nélkül(egyezés esetén a csiperkét választjuk) Ha nincs Rókagomba, akkor a Csiperke kerül a zsákba, ha belefér, egyébként kidobjuk a listából(csiperke.pop_front())
Feltételek alapján gombaszedés III. Ha már nincs Csiperke(csiperke.size()=0), akkor a Lilapereszke és Rókagomba kapcsolatát vizsgáljuk(persze mindezt csak akkor ha van Lilapereszke, ha nincs akkor a Rókagombát nézzük csak), és amelyik nagyobb az kerül a zsákba, ha belefér, ha nem kihagyjuk, azaz kikerül a listából(egyező súly esetén a Rókagomba kerül a zsákba, ha belefér) Ha nincs Rókagomba, akkor már csak a Lilapereszkéket nézzük
Feltételek alapján gombaszedés IV. Algoritmust ciklusban futtatjuk Addig míg a jelenlegi tömeg+a listák végén lévő súly(tehát minden gombából a legkisebb súlyú) kisebb, vagy egyenlő, mint a zsák kapacitása. Ha már ez a feltétel nem teljesül, nincs szükség további vizsgálatra, az algoritmus megáll.
Végül Eredmény fájlba(gomba.ki) és monitorra írása formázottan.
The end