PHP resuelve el problema del anillo de Joseph

Problema del anillo de Joseph (el mono elige al rey) Versión de PHP

El problema del problema de Joseph a veces se describe como el problema del rey mono, y el título es el siguiente. (La fuente de la pregunta de Joseph se publicará al final)

Un grupo de monos están dispuestos en círculo y numerados secuencialmente según 1, 2, ..., n.

Luego comience a contar desde el 1, cuente hasta el m-ésimo, sáquelo del círculo, comience a contar desde atrás, cuente hasta el m-ésimo y sáquelo..., así sucesivamente hasta el final Hasta allí solo queda un mono, ese mono se llama el rey.

Se requiere programar para simular este proceso, ingresar m, n y generar el número del último rey.

Simula este proceso con un programa, el código es el siguiente:

<?php
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(7, 4));         //第4只为大王

El siguiente es el proceso de simulación, para los monos que no se eliminan, la cola de la matriz se agrega continuamente:

 $n = 5
 $m = 3
 $arr = [1, 2, 3, 4, 5]
 $i $arr
 ---+-------------------- ----
  1 x 2 3 4 5 1
  2 xx 3 4 5 1 2
>3 xxx 4
  5 1 2
  4 xxxx 5 1 2 4 5 xxxxxx 1 2 4 5
>6 xxxxxx 2 4 5
  7 xxxxxxx 4 5 2
  8 xxxxxxxx 5 2 4
>9 xxxxxxxxx 2 4
 10 xxxxxxxxx 4 2 11
 xxxxxxxxxxxx 2 4
>12 xxxxxxxxxxxx 4

Supongo que te gusta

Origin blog.csdn.net/qq960685827/article/details/127787779
Recomendado
Clasificación