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.