Autor | Zpráva | ||
---|---|---|---|
PHPgirl Profil * |
#1 · Zasláno: 1. 5. 2010, 17:41:15
Ahoj, mám následující algoritmus, který počítá počet možných kombinací délky 9 podle pravidla, že v poli abeceda[Písmeno] jsou všechny písmena, která mohou za ním následovat. Následující kód ale přeteče paměť, a to i 1GB. Proto jsem chtěla vše urychlit tím, že budu ukládat jen poslední písmeno.
V řádku s $kombinace[$i][]=$temp.$add; tedy vymažu $temp, ale hlasí to pak error a nefunguje, proč? <?php /*Na vstup 3 A:AB B:BC C:CA je správným výstupem 12 Příklad Na vstup 5 A:ABCD B:ACEG C:DE E:A F:B G:F je správným výstupem 129*/ /* $abeceda["A"] = array("A","B","C","D"); $abeceda["B"] = array("A","C","E","G"); $abeceda["C"] = array("D","E"); $abeceda["E"] = array("A"); $abeceda["F"] = array("B"); $abeceda["G"] = array("F"); */ $abeceda["A"] = array("A","Q","g","w"); $abeceda["B"] = array("B","R","V","h","x"); $abeceda["C"] = array("C","D","H","S","i","y"); $abeceda["D"] = array("C","D","E","I","T","j","z"); $abeceda["E"] = array("D","E","L","N","P","U","X","k"); $abeceda["F"] = array("F","K","O","R","V","a","l"); $abeceda["G"] = array("G","H","J","W","Z","d","m"); $abeceda["H"] = array("C","G","H","I","U","X","Y","n","o"); $abeceda["I"] = array("D","H","I","X","Y","n","o"); $abeceda["J"] = array("G","J","W","Z","p"); $abeceda["K"] = array("F","K","N","V","a","b","e","q"); $abeceda["L"] = array("E","L","M","O","a","b","r"); $abeceda["M"] = array("L","M","c","s"); $abeceda["N"] = array("E","K","N","W","d","t"); $abeceda["O"] = array("F","L","O","a","e","u"); $abeceda["P"] = array("E","P","f","v"); $abeceda["Q"] = array("A","Q","g","w"); $abeceda["R"] = array("B","F","R","h","x"); $abeceda["S"] = array("C","S","i","y"); $abeceda["T"] = array("D","T","j","z"); $abeceda["U"] = array("E","H","U","k"); $abeceda["V"] = array("B","F","K","V","l"); $abeceda["W"] = array("G","J","N","W","m","p","t"); $abeceda["X"] = array("E","H","I","X","Y","n","o","y"); $abeceda["Y"] = array("H","I","X","Y","n","o"); $abeceda["Z"] = array("G","J","Z","m","p"); $abeceda["a"] = array("F","K","L","O","a","q"); $abeceda["b"] = array("K","L","b","r"); $abeceda["c"] = array("M","c","s"); $abeceda["d"] = array("G","N","d","m","t","u"); $abeceda["e"] = array("K","O","e","t","u"); $abeceda["f"] = array("P","f","v"); $abeceda["g"] = array("A","Q","g","w"); $abeceda["h"] = array("B","R","h","x"); $abeceda["i"] = array("C","S","i","n","y"); $abeceda["j"] = array("D","T","j","z"); $abeceda["k"] = array("E","U","k","r"); $abeceda["l"] = array("F","V","l"); $abeceda["m"] = array("G","W","Z","d","m","p"); $abeceda["n"] = array("H","I","X","Y","i","n"); $abeceda["o"] = array("H","I","X","Y","o"); $abeceda["p"] = array("J","W","Z","m","p"); $abeceda["q"] = array("K","a","q"); $abeceda["r"] = array("L","b","k","r"); $abeceda["s"] = array("M","c","s"); $abeceda["t"] = array("N","W","d","e","t","u"); $abeceda["u"] = array("O","d","e","t","u"); $abeceda["v"] = array("P","f","v"); $abeceda["w"] = array("A","Q","g","w"); $abeceda["x"] = array("B","R","h","x"); $abeceda["y"] = array("C","S","X","i","y"); $abeceda["z"] = array("D","T","j","z"); $kombinace[0] = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); for($i=1;$i<9;$i++) { foreach ($kombinace[$i-1] as $temp) { if(strlen($temp)==$i) { foreach ($abeceda[substr($temp,-1)] as $add) { $kombinace[$i][]=$temp.$add; } } } unset($kombinace[$i-1]); } foreach ($kombinace[9] as $temp) { if(strlen($temp)==$i) $sum++; } echo $sum; ?> |
||
Alphard Profil |
#2 · Zasláno: 1. 5. 2010, 18:42:19
PHPgirl:
Můžete ty pravidla více vysvětlit slovně? Zkusil jste jiný postup, ale zřejmě jsem to pochopil špatně, vychází mi jiná čísla. Co znamenají v příkladech ta čísla před definicí (3 a 5)? A v druhém příkladě vám navíc chybí definice, co následuje po D. |
||
Časová prodleva: 14 let
|
0