Dans l'article précédent "PHP Random One Algorithm (1) ", nous avons brièvement présenté les questions d'entretien de PHP Random One Algorithm. Ensuite, nous continuerons à combiner le contenu précédent pour expliquer en détail l'algorithme PHP.
Le problème est le suivant :
Un groupe de singes s'alignent en cercle et sont numérotés séquentiellement par 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.
L'exemple de code de solution est le suivant :
<?php function king($n, $m){ $monkeys = range(1, $n); //创建1到n数组 $i=0; while (count($monkeys)>1) { //循环条件为猴子数量大于1 if(($i+1)%$m==0) { //$i为数组下标;$i+1为猴子标号 unset($monkeys[$i]); //余数等于0表示正好第m个,删除,用unset删除保持下标关系 } else { array_push($monkeys,$monkeys[$i]); //如果余数不等于0,则把数组下标为$i的放最后,形成一个圆形结构 unset($monkeys[$i]); } $i++;//$i 循环+1,不断把猴子删除,或 push到数组 } return current($monkeys); //猴子数量等于1时输出猴子标号,得出猴王 } echo king(10,3);
Ici nous créons une méthode King, le paramètre $n représente n singes, $m représente compter jusqu'au mois un singe. Ensuite, dans le corps de la méthode king, nous créons d'abord un tableau de 1 à n via la fonction range et utilisons $monkeys pour le recevoir. Utilisez ensuite une boucle while pour déterminer les éléments qui répondent aux exigences.
La condition de la boucle while est que lorsque le nombre de singes $monkeys est supérieur à 1, le corps de la boucle sera exécuté. Dans le corps de la boucle, utilisez if...else pour juger. If ($i+1)%$m==0, c'est-à-dire que lorsque le reste est égal à 0, c'est-à-dire que le mième singe est compté, utilisez unset. pour supprimer cet élément. Et conserver la relation d'indice.
Si le reste n'est pas égal à 0, utilisez la fonction array_push pour mettre l'indice du tableau $i en dernier, formant une structure circulaire. La fonction array_push permet de pousser un ou plusieurs éléments jusqu'à la fin du tableau (push).
Enfin, faites une boucle $i +1, supprimez continuellement les singes ou poussez-les vers le tableau. Lorsque le nombre de singes est égal à 1, l'étiquette du singe est affichée et le roi des singes est obtenu.
Dans la méthode ci-dessus, les paramètres que nous donnons sont 10 et 3, et le résultat de sortie est :
4
signifie que le roi singe obtenu est étiqueté 4 singe.
L'introduction de cet article à l'algorithme de sélection aléatoire de PHP se termine ici. Dans le prochain article « Algorithme de sélection aléatoire de PHP (3) », nous vous présenterons comment utiliser Xdebug. pour exécuter le débogage de l'implémentation de cette méthode.
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!