<?php
/**
* 猴子选大王
* @param [type] $data 猴子数据,默认值都为1,排查设为0, 例: [1,1,1,1,1,1]
* @param [type] $m 报数
* @return [type] 猴子序号
*/
function selectKing($data, $m)
{
$count = $end = count($data); //猴子个数
$current = 0;
$number = 1;
while ($count) {
if ($data[$current] != 0) {
//最后一个
if ($count == 1) {
break;
}
if ($number == $m) {
$data[$current] = 0; //排除一个
$number = 1; //重新报数
$count--; //去掉一个
} else {
$number++; //继续报数
}
}
//下一位
$current++;
if ($current == $end) {
$current = 0;
}
}
return $current + 1;
}
$data = [1, 1, 1, 1, 1, 1, 1];
var_dump(selectKing($data, 6));
php面试题-猴子选大王算法实现
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 我们采用闭包自调用的方式,很轻松的解决了这个问题,无需循环,代码美观可读性强 1.我在桌面创建了一个php文件,实...
- 6.2.4 PHP删除数组中的值应用实例(猴子选大王) 数组的声明 数组的定义 •直接赋值的方式声明数组•使用ar...
- ...<?php//其实n小,每次数一个数且没有被排除时,数组会array_push,直到选中。function ...