Milyen módszerrel kell megoldani?
Kapok egy P és F betűkből álló stringet amik piros és fekete golyókat jelentenek sorban egymás mellett. Vehetek ki (mintha törölném) golyókat a sorból de mindig csak a 2 legszélső golyó valamelyikét. Az a kérdés hogy hány golyót kell minimum elvennem ahhoz hogy egyenlő számú piros és fekete golyó maradjon a sorban. Például ha "PPFP" a sor akkor 2 a megoldás. Ha "PPP" akkor 3. Ha "PPFPFF" akkor 0.
Hogy döntsem el hogy melyik oldalról érdemes elvenni az aktuális golyót?
Dehogy.
Egyik esetben sem mindegy.
Menj el inkább most.
Szívesen látnám, ahogy egy gyűrődött szalmakalappal a fejeden, a rózsabokrok között lődörögsz.
Az 1-es szerintem egy mohó algoritmusra utal. Mindig abból a végéből csípsz le, ahol az a golyó van, amelyikből több van a sztringben. Ha mindkét oldalon ilyen golyó van, akkor bármelyiket választhatod, de legyen mondjuk ez fixen a bal vége. Ha meg mindkét oldalán a másik (kevesebb) golyó van, akkor is muszáj lesz valamelyikből lecsípni. Ezzel rontod az "egyensúlyt", de enélkül nem tudsz tovább haladni. Ha rosszul választasz oldalt, akkor lehet hogy sokkal többször kell elvenni a szélekről. Ekkor nem az elvárt megoldást kapod (minimum elvett golyók száma), hanem egy szuboptimálisat.
Példa: "FPFPFPPPPPPFPFP". Ha az első vágás után (jobb oldal) mindig a bal végéből vágunk le, akkor 11 vágás kell, és 2-2 piros és fekete golyó marad. Ha mindig a jobb oldalról, akkor csak 9 vágás kell, és 3-3 P/F marad.
Erre a feladatra írhatnál egy brute force keresőt, ami (majdnem) az összes kombinációt kipróbálja rekurzívan. Amikor megoldásra jutsz (a golyók száma egyenlő) eltárolod, hogy hány lépéssel jutottál oda, és esetleg a vágások sorrendjét is. Ezután csak eddig a mélységig vizsgálod és tovább nem, hiszen "jobb" megoldást több vágással nem fogsz találni.
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!