Le singe choisit le roi.

Source : Internet
Auteur : utilisateur
Au cours de l'interview, j'ai rencontré une question: un groupe de singes alignés en cercle, selon 1,2,...,n à son tour numérotés.Puis du premier nombre, comptez jusqu'au m seulement, jele-le hors du cercle, de derrière pour commencer à compter, puis comptez jusqu'au m seulement, en le donnant... alors continuez jusqu'à ce qu'il ne reste finalement qu'un singe, le singe s'appelle le roi.Nécessite une programmation de simulations"

Au cours de l'entrevue, j'ai rencontré une question comme celle-ci:

Un groupe de singes alignés et numérotés en 1,2,...,n.Puis du premier nombre, comptez jusqu'au m seulement, jele-le hors du cercle, de derrière pour commencer à compter, puis comptez jusqu'au m seulement, en le donnant... alors continuez jusqu'à ce qu'il ne reste finalement qu'un singe, le singe s'appelle le roi.Nécessite une programmation pour simuler ce processus en entrant m, n, et la sortie du nombre du dernier roi.

Joseph algorithme, ha ha, regardé le code de crevettes en ligne, se sentent très difficiles à comprendre, mais aussi encombrant, alors il a écrit un morceau de code

/**
:: Les singes choisissent les rois
*
:: nombre de singes @param int $m
:: @param int $n hors jeu
:: tableau @return
*
*/
roi de fonction ($m, $n)
{
Construction d'un tableau
pour ($i s1; $i<$m+1>
$arr . . . . . . . $i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
}
$i s 0; Définir des pointeurs de tableau

tandis que ($arr)
{
Traversez le tableau pour déterminer si le singe actuel est un numéro de série de sortie, et si oui, d'être hors, sinon le mettre à la fin du tableau
si ($i 1)% $n s.0)
unset ($arr s$i) ;
s d'autre . . .
tableau-push ($arr, $arr s.$i) Cette ronde de singe non-out mis queue de tableau
unset ($arr s$i) ; supprimer
   }
$i ?
}
retour $arr ;
}

var-dump (roi (6,4));

Le roi a 5 ans.

Nous contacter

Le contenu de cette page provient d'Internet et ne reflète pas l'opinion d'Alibaba Cloud ; les produits et services mentionnés sur cette page n'ont aucune relation avec Alibaba Cloud. Si le contenu de la page vous semble problématique, veuillez nous écrire un courriel, nous traiterons le problème dans les 5 jours suivant la réception de votre message.

Si vous constatez des cas de plagiat de la part de la communauté, veuillez envoyer un courriel à : info-contact@alibabacloud.com et fournir des preuves pertinentes. Un membre de notre équipe vous contactera dans les 5 jours ouvrables.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.