Explication détaillée de la façon d'implémenter le problème Joseph Ring en PHP

jacklove
Libérer: 2023-04-02 19:12:02
original
1978 Les gens l'ont consulté

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);
Copier après la connexion

2. Récursivité

7 11 3 8 1 6 2 10 9 12 5 4
Copier après la connexion
Copier après la connexion

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);
Copier après la connexion

Articles qui pourraient vous intéresser :
7 11 3 8 1 6 2 10 9 12 5 4
Copier après la connexion
Copier après la connexion

Explication 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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!