Heim >Backend-Entwicklung >PHP-Tutorial >Unterschiede zwischen klassischen Algorithmusfragen in PHP
Man kann sagen, dass der Algorithmus von PHP sehr leistungsfähig ist, wenn man Programmiersprachen wie PHP lernen möchte. Dann sollten sich alle Programmierer die folgende Frage ansehen !
Fünf Leute haben einen Haufen Äpfel gestohlen und wollten die Beute am nächsten Tag teilen. Am Abend ging ein Mann hinaus und teilte das gesamte Gemüse und Obst in fünf Teile, aber es war noch eins übrig. Er warf dies dem Affen im Baum zu und versteckte zuerst ein Fünftel. Unerwarteterweise dachten auch die anderen vier Personen genauso. Sie teilten es alle wie die erste Person in fünf Teile und warfen das zusätzliche Stück dem Affen zu, wodurch sie 1/5 stahlen. Am nächsten Tag teilten alle die Beute auf, und sie teilten sie auch in fünf Teile und warfen einen weiteren dem Affen zu. Die letzte Person bekam einen Anteil. Frage: Wie viele Äpfel gibt es?
for ($i = 1; ; $i++) { if ($i%5 == 1) { //第一个人取五分之一,还剩$t $t = $i - round($i/5) - 1; if($t % 5 == 1) { //第二个人取五分之一,还剩$r $r = $t - round($t/5) - 1; if($r % 5 == 1) { //第三个人取五分之一,还剩$s $s = $r - round($r/5) - 1; if($s % 5 == 1) { //第四个人取五分之一,还剩$x $x = $s - round($s/5) - 1; if($x % 5 == 1) { //第五个人取五分之一,还剩$y $y = $x - round($x/5) - 1; if ($y % 5 == 1) { echo $i; break; } } } } } } }
Eine Gruppe Affen stellt sich im Kreis auf und wird nach 1, 2,..., n nummeriert. Dann beginnen Sie mit dem Zählen vom ersten, zählen Sie bis zum m-ten, werfen Sie es aus dem Kreis, beginnen Sie von hinten zu zählen, zählen Sie bis zum m-ten, werfen Sie es raus ... und fahren Sie auf diese Weise bis zum Ende fort Es gibt nur noch einen Affen, den man „König“ nennt. Um diesen Prozess zu simulieren, ist eine Programmierung erforderlich. Geben Sie m und n ein und geben Sie die Nummer des letzten Königs aus.
function king($n, $m){ $monkeys = range(1, $n); $i=0; $k=$n; while (count($monkeys)>1) { if(($i+1)%$m==0) { unset($monkeys[$i]); } else { array_push($monkeys,$monkeys[$i]); unset($monkeys[$i]); } $i++; } return current($monkeys); } $a = king(5, 2); var_dump($a);
Der Turm von Hanoi (auch bekannt als der Turm von Hanoi) ist eine alte Legende in Indien. Brahma, der Gott, der die Welt erschaffen hat, hinterließ drei Diamantstäbe in einem Tempel. Der erste war mit 64 runden Goldstücken bedeckt. Der größte lag unten und die anderen waren kleiner als der andere Im Tempel bewegten die Mönche unermüdlich einen Stock nach dem anderen. Es wurde festgelegt, dass der mittlere Stock als Hilfe verwendet werden durfte, der große jedoch nicht auf das Kleine gelegt werden. Bitte führen Sie die Berechnung selbst durch, um die Antwort zu finden. Sehen Sie sich das Programm am Ende an. Angesichts der enormen Zahl (wie oft die Scheibe bewegt wurde) 18446744073709551615 scheint es unmöglich zu sein, die Bewegung der Goldscheibe abzuschließen, selbst wenn die Mönche ihr ganzes Leben damit verbringen.
Später entwickelte sich aus dieser Legende das Spiel „Turm von Hanoi“:
1. Es gibt drei Pole A, B und C. Es gibt mehrere Schüsseln auf der Stange A
2. Bewegen Sie jeweils eine Schüssel, und die kleinere kann nur auf der größeren gestapelt werden
3 Bewegen Sie alle Schüsseln von Stange A zu Stange C
Nach Recherchen wurde festgestellt, dass das Aufbrechen des Turms von Hanoi sehr einfach ist. Bewegen Sie einfach die Goldstücke gemäß den Bewegungsregeln in eine Richtung:
Zum Beispiel die Bewegung des Turms von Hanoi der 3. Ebene: A →C,A→B,C→B,A→C,B→A ,B→C,A→C
Darüber hinaus ist das Turm-von-Hanoi-Problem auch ein klassisches Rekursionsproblem in der Programmierung.
function hanoi($n,$x,$y,$z){ if($n==1){ echo 'move disk 1 from '.$x.' to '.$z."\n"; }else{ hanoi($n-1,$x,$z,$y); echo 'move disk '.$n.' from '.$x.' to '.$z."\n"; hanoi($n-1,$y,$x,$z); } } hanoi(3,'A','B','C');
Verwenden Sie PHP, um Blasensortierungs- und Schnellsortierungsalgorithmen zu beschreiben. Das Objekt kann ein Array sein.
//对数组冒泡排序 function bubble_sort($array){ $count = count($array); if ($count <= 0) return false; for($i=0; $i<$count; $i++){ for($j=$count-1; $j>$i; $j–){ if ($array[$j] < $array[$j-1]){ $tmp = $array[$j]; $array[$j] = $array[$j-1]; $array[$j-1] = $tmp; } } } return $array; }
function quick_sort($array) { if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $i<count($array); $i++){ if ($array[$i] <= $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); }
Verwenden Sie PHP, um sequentielle Such- und binäre Suchalgorithmen zu beschreiben. Bei der sequentiellen Suche muss die Effizienz berücksichtigt werden. Das Objekt kann ein geordnetes Array sein.
//使用二分查找数组中某个元素 function bin_sch($array, $low, $high, $k){ if ($low <= $high){ $mid = intval(($low+$high)/2); if ($array[$mid] == $k){ return $mid; }elseif ($k < $array[$mid]){ return bin_sch($array, $low, $mid-1, $k); }else{ return bin_sch($array, $mid+1, $high, $k); } } return -1; }
Schreiben Sie a Binäre Suche Die Funktion des Sortieralgorithmus für dimensionale Arrays kann in PHP integrierte Funktionen aufrufen und ist vielseitig
function array_sort($arr, $keys, $order=0) { if (!is_array($arr)) { return false; } $keysvalue = array(); foreach($arr as $key => $val) { $keysvalue[$key] = $val[$keys]; } if($order == 0){ asort($keysvalue); }else { arsort($keysvalue); } reset($keysvalue); foreach($keysvalue as $key => $vals) { $keysort[$key] = $key; } $new_array = array(); foreach($keysort as $key => $val) { $new_array[$key] = $arr[$val]; } return $new_array; }
Haben Sie es geschafft? Wenn Sie es noch nicht getan haben, verwenden Sie einfach den PHP-Algorithmus und befolgen Sie die oben beschriebene Methode, um diese Frage zu beantworten.
Das obige ist der detaillierte Inhalt vonUnterschiede zwischen klassischen Algorithmusfragen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!