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.

  1. a jelenléte a betűket. Kizárása tartalmazó leveleket definiáljuk. Mi zárja ki, amennyire bejegyzés már használni.
  2. Hisszük karaktereket. Egy adott bejegyzés ismeretes, a szavak egy megfelelő hosszúságú, vagy csak nem illik.
  3. ismétlései leveleket.
  1. a betűk sorrendje a szókincs szó.
  2. 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

  1. 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.
  2. 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.
  3. 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