C++ vagy C# feladat segítség kellene?
Kapok két tömböt. Az egyik fixen 7 elemű, a másik 1-7 elemű. Az első tömb egy hét napjait jelképezi és elemei azt mutatják hogy adott napon hány egységnyi munkát tudok elvégezni. A másik tömb a munkákat jelképezi és elemei azt mutatják hogy adott munka hány egységnyi időt vesz igénybe. A munkákat nem lehet darabolni, ha egy munkát elkezdek akkor ugyanazon a napon be is kell fejezni. Az a kérdés hogy el tudom-e végezni az összes munkát.
Például:
idők = 1 5 3 3 1 1 1
munkák = 3 4 2 2
A válasz itt false. A 2. napon pl. elvégezhetek egy 2 és egy 3 időigényű munkát de így a 4 időigényű munkát már nem fogom tudni elvégezni. Ha a 4 időigényűt csinálom a 2. napon akkor a 3 időigényűt és az egyik 2 időigényűt szintén meg tudom csinálni, viszont az utolsót már nem.
Én nemtudom értelmezni a feladatot. Ezért nem tudok segíteni.
"Ha a 4 időigényűt csinálom a 2. napon akkor a 3 időigényűt és az egyik 2 időigényűt szintén meg tudom csinálni, viszont az utolsót már nem."
Ha a 4 időigényűt megcsinálod a 2 napon akkor marad még a második napra egy egységnyi időd ebbe nem fér bele 2 vagy több időigényű munka. Ezért nem értem.
Összekell hasonlítanod a tömb elemeket ha egyből találsz olyat hogy a munkaidőigény nem fér bele a napi időbe akkor már nem végezhető el az összes munka és felesleges ezzel csekkolni a többit.
A két tömb külömbségére van szükséged. Az idők tömbb elemeit kivonod a munkák tömb elemeiből és ha az eredmény 0 vagy negatív akkor nem végezhető el és ezzel a válaszod meg is van ezért nem kell csekkolni a többi elemet feleslegesen. Addig megy a ciklus míg a külömbség nem negatív vagy nulla valamint az egyik vagy a másik tömb végére nem érsz ha végére értél akkor a legvégén pl egy logikai változót true rá állítasz ezzel jelezve hogy a munkák elvégezhetőek.
4-es: bármelyik nap bármelyik munka elvégezhető, egy nap akár több is
backtrack-el kéne próbálkozni az első jó megoldásig
az első napról indulsz, ha valamelyik munka elvégezhető, akkor azt beleteszed a megoldásba és megpróbálod befejezni (rekurzívan hívod a függvényt ugyan ezzel a nappal és újra vizsgálod, hogy van-e olyan munka ami elvégezhető, ha nincs akkor újra hívod a függvényt a következő napra), ha nem lehet befejezni, akkor kiveszed a megoldásból és nézed a következő munkát, hogy elvégezhető-e aznap
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!