Maison > Article > développement back-end > Différences entre les questions d'algorithme classiques en PHP
L'algorithme de PHP peut être considéré comme très puissant. Certaines personnes disent que si vous voulez apprendre des langages de programmation tels que PHP, vous devez avoir une bonne pensée logique. Ensuite, tous les programmeurs devraient jeter un œil à la question suivante. !
Cinq personnes ont volé un tas de pommes et ont prévu de partager le butin le lendemain. Le soir, un homme est sorti et a divisé tous les légumes et fruits en 5 parties, mais il y en avait un en plus. Il l'a jeté au singe dans l'arbre et en a caché 1/5 en premier. De façon inattendue, les quatre autres personnes ont également pensé de la même manière. Ils l'ont tous divisé en 5 parties comme la première personne et ont jeté la pièce supplémentaire au singe, en volant 1/5. Le lendemain, tout le monde a partagé le butin, ils l'ont également divisé en 5 parties et en ont jeté une de plus au singe. La dernière personne a reçu une part. Question : Combien y a-t-il de pommes ?
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; } } } } } } }
Un groupe de singes s'alignent en cercle et sont numérotés selon 1, 2,..., n. Ensuite, commencez à compter à partir du 1er, comptez jusqu'au mème, expulsez-le du cercle, commencez à compter par derrière, comptez jusqu'au mème, expulsez-le..., et continuez ainsi jusqu'à la fin. il ne reste plus qu'un singe, ce singe s'appelle le roi. Une programmation est nécessaire pour simuler ce processus, saisir m, n et afficher le numéro du dernier roi.
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);
La Tour de Hanoï (également connue sous le nom de Tour de Hanoï) est une ancienne légende en Inde. Brahma, le dieu qui a créé le monde, a laissé trois tiges de diamant dans un temple. La première était recouverte de 64 pièces d'or rondes. La plus grande se trouvait en bas et les autres étaient plus petites que les autres. les uns après les autres. Dans le temple Les moines les déplaçaient inlassablement un à un d'un bâton à l'autre. Il était stipulé que le bâton du milieu pouvait être utilisé comme aide, mais qu'un seul pouvait être déplacé à la fois, et le gros ne le pouvait pas. être placé au-dessus du petit. Veuillez exécuter le calcul vous-même pour trouver la réponse. Voir le programme à la fin. Face au nombre énorme (le nombre de fois où le disque a été déplacé) 18446744073709551615, il semble que même si les moines passent toute leur vie, il est impossible d'achever le mouvement du disque d'or.
Plus tard, cette légende a évolué vers le jeu de la Tour de Hanoï :
1 Il y a trois pôles A, B et C. Il y a plusieurs plats sur le pôle A
2 Déplacez un plat à la fois, et le plus petit ne peut être empilé que sur le plus grand
3 Déplacez tous les plats du pôle A au pôle CAprès recherches, il a été constaté que le craquage de la Tour de Hanoï est très simple, il suffit de déplacer les pièces d'or dans une direction selon les règles de mouvement :
Par exemple, le mouvement de la Tour de Hanoï de 3ème niveau : A →C,A→B,C→B,A→C,B→A ,B→C,A→C
De plus, le problème de la Tour de Hanoï est aussi un problème de récursion classique en programmation.
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');Utilisez PHP pour décrire les algorithmes de tri à bulles et de tri rapide. L'objet peut être un tableau.
//对数组冒泡排序 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); }Utilisez PHP pour décrire les algorithmes de recherche séquentielle et de recherche binaire. La recherche séquentielle doit prendre en compte l'efficacité. L'objet peut être un tableau ordonné
//使用二分查找数组中某个元素 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; }Écrivez un. recherche binaire La fonction d'algorithme de tri de tableaux dimensionnels peut appeler des fonctions intégrées à PHP et est polyvalente
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; }L'avez-vous fait ? Si vous ne l'avez pas encore fait, utilisez simplement l'algorithme PHP et suivez la méthode ci-dessus pour répondre à cette question.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!