Maison  >  Article  >  développement back-end  >  Un article pour résoudre le problème de l'anneau Joseph (version PHP)

Un article pour résoudre le problème de l'anneau Joseph (version PHP)

藏色散人
藏色散人avant
2021-12-31 15:19:564108parcourir

Cet article vous présentera la version PHP du problème Joseph Ring (le singe choisit le roi). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Problème de Joseph Ring (Le singe choisit le roi) version PHP

Le problème de Josephus est parfois décrit comme le problème du singe choisit le roi, et le titre est le suivant. (L'origine du problème de Joseph sera affichée à la fin)

Un groupe de singes alignés en cercle et numérotés selon 1, 2,...,n.

Ensuite, commencez à compter à partir du 1er, comptez jusqu'au mois, expulsez-le du cercle, commencez à compter par derrière, comptez jusqu'au mois, expulsez-le..., et continuez ainsi, jusqu'à là il ne reste plus qu'un singe, ce singe s'appelle le roi.

Nécessite une programmation pour simuler ce processus, saisir m, n et afficher le numéro du dernier roi.

Utilisez un programme pour simuler ce processus. Le code est le suivant :

function monkeyKing($n, $m)
{
    $arr = range(1, $n);       //构造一个数组
    $i = 1;                         //从第一个开始循环
    while (count($arr) > 1) {       //如果总数大于1
        if ($i % $m != 0) {
            $arr[] = $arr[$i - 1];  //不被踢出则压入数组尾部
        }
        unset($arr[$i - 1]);        //压入数组然后删除
        $i++;                       //继续循环
    }
    return $arr[$i - 1];            //直至最后剩下一个为大王
}
print_r(monkeyKing(5, 3));         //第4只为大王

Voici le processus de simulation pour les singes qui ne sont pas éliminés, la queue du tableau est ajoutée en continu :

 $n = 5
 $m = 3
 $arr = [1, 2, 3, 4, 5]
 $i   $arr
 ---+------------------------
 1    x 2 3 4 5 1
 2    x x 3 4 5 1 2
>3    x x x 4 5 1 2
 4    x x x x 5 1 2 4
 5    x x x x x 1 2 4 5
>6    x x x x x x 2 4 5
 7    x x x x x x x 4 5 2
 8    x x x x x x x x 5 2 4
>9    x x x x x x x x x 2 4
 10   x x x x x x x x x x 4 2
 11   x x x x x x x x x x x 2 4
>12   x x x x x x x x x x x x 4

Origine de la question de Joseph :

Cette question est basée sur Flavio· Elle doit son nom à Josèphe, un historien juif du 1er siècle. Il écrit dans son journal que lui et 40 de ses camarades ont été encerclés par les troupes romaines dans la grotte. Ils ont discuté de l'opportunité de se suicider ou d'être capturés, et ont finalement décidé de se suicider et ont décidé qui tuerait qui en tirant au sort. Josèphe et un autre homme étaient les deux derniers à rester. Josèphe a convaincu l'homme qu'ils se rendraient à l'armée romaine et ne se suicideraient plus. Josèphe attribuait sa survie à la chance ou à la providence, il ne savait laquelle.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer