Maison >développement back-end >tutoriel php >Explication détaillée de la façon d'implémenter le problème Joseph Ring en PHP
Cet article présente principalement la méthode de réalisation du problème de l'anneau Joseph en PHP et analyse les techniques de fonctionnement pertinentes de PHP utilisant des boucles et la récursivité pour réaliser le problème de l'anneau Joseph sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit.
Les exemples de cet article sont expliqués. Une méthode pour implémenter le problème de l'anneau Joseph en PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
1 Aperçu
Tout d'abord, jetons un coup d'œil à plus. Descriptions courantes des problèmes de l'anneau de Joseph sur Internet : L'anneau de Joseph (problème de Joseph) est un problème d'application mathématique : on sait que n personnes (représentées respectivement par les nombres 1, 2, 3...n) sont assises autour d'une table ronde. Commencez à compter à partir de la personne numérotée k, et la personne qui compte jusqu'à m sort de la file d'attente ; la personne suivante commence à compter à partir de 1, et la personne qui compte jusqu'à m sort à nouveau de la file d'attente, répétez ce schéma jusqu'au tour suivant ; table Tout le monde est sorti. Habituellement, lors de la résolution de ce type de problème, nous le numérotons de 0 à n-1, et le résultat final + 1 est la solution au problème d'origine.
2. Code d'implémentation
1. 🎜>
Résultat de l'exécution :function circle($arr,$idx,$k){ for($i=0;$i<$idx;$i++){ $tmp = array_shift($arr); array_push($arr,$tmp); } $j = 1; while(count($arr) > 0){ $tmp = array_shift($arr); if($j++%$k == 0){ echo $tmp."\n"; }else{ array_push($arr,$tmp); } } } $arr = array(1,2,3,4,5,6,7,8,9,10,11,12); $idx = 3; $k = 4; circle($arr,$idx,$k);
2. Récursivité
7 11 3 8 1 6 2 10 9 12 5 4
Résultats d'exécution :
function circle($arr,$idx,$k){ $len = count($arr); $i = 1; if($len == 1){ echo $arr[0]."\n"; return ; } else { while($i++ < $k){ $idx++; $idx = $idx%$len; } echo $arr[$idx]."\n"; array_splice($arr,$idx,1); circle($arr,$idx,$k); } } $arr = [1,2,3,4,5,6,7,8,9,10,11,12]; $idx = 3; $k = 4; circle($arr,$idx,$k);Articles qui pourraient vous intéresser :
7 11 3 8 1 6 2 10 9 12 5 4Explication de la méthode d'utilisation de Passport pour implémenter l'authentification Auth dans Laravel 5.5
Outil d'optimisation des performances en PHP que vous pouvez ignorer : lié au générateur contenu
Implémentation détaillée du chargement automatique du compositeur dans le framework Laravel
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!