Új hozzászólás Aktív témák

  • mgoogyi

    senior tag

    válasz Ron Swanson #4165 üzenetére

    Pontos feladatleírás?

    for (i = 1; i < vendegek.size(); i++) {
    Itt 0-tól kéne indulni, az első vendég is lehet a megoldás.
    A TVendegek osztályt átnevezném Vendeg-re, mert az egy darab vendég szerintem.

    A feltöltésnél add át a vektornak a ctor-ba a méretét, hogy a push_back-nél elkerüld az átméretezést.
    Ha kevés benne a hely, újrafoglal magának helyet és másolgat. De várhatóan nem ezen múlik.

    A kódodnál viszont valszeg a dupla for ciklusnál lehet fogni sokat, az teszi négyzetessé a futási idejét a bemenet méretétől függően. Ez a feladat gyakorlatilag annyi, hogy melyik zárt intervallumnak van a legtöbb metszete a többivel.
    Én valami olyasmit csinálnák, hogy rendezném a vendégeket érkezési sorrendben (/távozásiban ) és végigmennék rajtuk lineárisan és jegyezném, hogy most jött valaki, most elment, és azt nézném, hogy mikor voltak a legtöbben.
    Oké, most esestt le. Nem kell a vendégeket rendezni, külön az érkezési idejüket egy tömbbe teszed, külön a távozásit és párhuzamosan haladsz a kettőn két külön indexszel. Ha a soron követő két szám között az érkezési <=, akkor növelsz a számlálón, ha meg nem, akkor csökkentesz. Ennek a számlálónak a maximumát keresed és egy vendéget, aki akkor ott volt.
    Ez már elég erős tipp szerintem. Lényeg, hogy az egymásba ágyazott ciklusokkal nem fogod tudod megoldani elég gyorsan, csak lineárisan mehetsz végig a vendégek dolgain.

Új hozzászólás Aktív témák