Hogyan tegyen javaslatot a betűk a felhasználó által megadott verem túlcsordulás az orosz
A bemeneti A program szolgált egy sor angol betűket. Van egy szótár a szavak.
Hogyan kell létrehozni ezeket a javaslatokat a szavak az egyes javaslatok szerint kizárólag az említett levelek küldtek a bemeneti, mivel az ismétlések számát.
Bejövő karakterkészlet: hellomyfriend
Válassza szavakat, amelyek megfelelnek egy sor bemeneti jelek tettem. De gyorsan, hogy mondatokat ki őket nem működik.
Megtettem rendezésével a szavakat. Kifejezést myfavoritegame script gyakoroltam körülbelül 5 percig. Az oldalon kapnak azonnal.
Tud valami tanácsot?
meghatározott augusztus 28 '15 at 07:43
További tipp, hogy nézd meg a kereső, mint a Sphinx - Rikaz augusztus 28 '15 at 08:25
A kérdés úgy hangzott: „Hogyan, hogy a válogatott egy szót a szótárból, így egy előre meghatározott kifejezés,” mint a példában vezetsz kereső anagramma. Tudna tisztázni a problémát, hogy néhány példát. - Ruslan augusztus 28 '15 at 08:53
Tegyük fel, hogy csak meg kell találni az összes lehetséges kombinációját egy szót a szótárból, amely kielégíti a feltételt. Összpontosít az adott nyelven van.
- a jelenléte a betűket. Kizárása tartalmazó leveleket definiáljuk. Mi zárja ki, amennyire bejegyzés már használni.
- Hisszük karaktereket. Egy adott bejegyzés ismeretes, a szavak egy megfelelő hosszúságú, vagy csak nem illik.
- ismétlései leveleket.
- a betűk sorrendje a szókincs szó.
- vagyis a szó.
Hogy gyorsítsa meg kell keresni a fontos funkciók a lehető leggyorsabban eltávolítja a lényegtelen szempontokat, ha szükséges.
Ahhoz, hogy gyorsan megtalálja a szót a megfelelő sor betű, de kizárva ismétlések, ez lehet kicsit index javasolt @Mirdin: 26 angol betűk = 26 bit. Száma a szavak szótára (vagy csak index a sor számát), és hozzon létre egy külön index két oszlopban: id szó - bitmaszkként álló betűk. Mert szókincs kevesebb, mint 65 ezer. A szavak, egy indexet „súlya” 6 byte szavanként, kevesebb, mint 400k. Meg lehet tartani a memóriában majdnem azonnali keresés. Így gyorsan megtalálhatja a példában az első szó a kifejezést -, csak hogy biztos ki bit „extra” betű.
Meg kell, hogy egy példányt a szótárban, amikor a levelek a szó ábécé sorrendben. és a szavak ábécé sorrendben. Ie ismét külön index: sortirovannye_bukvy - id_slova. Ez az index lesz nehezebb a szótárban is (szavak száma * 2 vagy 3 bájt). Ebben index, akkor gyorsan megtalálni a megfelelő szavakat, és dobja pontosan-helytelen.
Algoritmus az ilyen. Keresünk az első szót. Azt akarom, hogy megtalálják a legelső szót a lehető legnagyobb hosszát. Bust hosszúságú, a legnagyobbtól a legkisebb. Evés érvényes karakterek és hosszát. Keresse az első szó, updated érvényes betűk és szavak hossza - keresünk a következő szót.
Válaszol augusztus 28 '15 at 20:59
- Azt, hogy egy szerkezet (a táblát az adatbázisban, a hash tábla, szótár, és úgy, hogy ott van a php) a két terület a bejegyzést: hash és valóban azt a szót. Mi kalapált szó ezt a struktúrát.
- Hash nagyjából a következő: az index a betűk az ábécé - a hatalom két, add fel az összes betűt a szó (32 bit a magyar nyelv elegendőnek kell lennie). Ez a legegyszerűbb lehetőség, szükséges lehet, hogy dolgozzon ki egy bonyolultabb funkcióval.
- Szerzés a szó, hogy meg kell zaanagramit - számíthatja a hash és ránézek a mi struktúra
UPD: Ez az egyetlen szó, egy mondat lesz bonyolultabb, de az elv ugyanaz
Válaszol augusztus 28 '15 at 07:59
Betűk ismétlése rontja az egész málna. A „szabad”, a „e” index 4, az összeg megduplázódik 2 ^ 4, ami ugyanaz, mint a 2 ^ 5, az „f”. - Sergiks augusztus 28 '15 at 20:49
@Sergiks, igen, igazad van, leírtam a legegyszerűbb eset, hogy a gyakorlatban van, hogy egy kicsit bonyolultabb, mint valaha. - Mirdin augusztus 29 '15 at 04:32