慕森卡
2018-06-04 16:52:05浏览 1543
<?php
/*
* 要求:有n只猴子围城一圈,从第1只猴子开始数,每数m只猴子将其剔除,直至剩下最后一只;
* 用php的方法对其模拟实现;
* 思路:首先我们可以把这n只猴子看成一个数组,即对该数组进行遍历,直至该数组剩下最后一个元素;
* 难点:如何遍历该数组,才能实现上述的要求;
* 分析:首先我们可以想象的出当我们遍历完数组中的第一个不符合要求元素之后,我们可以把该元素放置
* 在该数组的末尾以便下次继续循环
* */
$dw=xdw(39,3);
var_dump($dw);
function xdw($n,$m){
$tmp_arr=array();
$tmp='a';
for($i=0;$i<$n;$i++){
$tmp_arr[] = $tmp;
$tmp++;
}
$count=count($tmp_arr);
for($i=1;$i<$count;$i++){
if($i%$m==0){
if(count($tmp_arr)>1){
unset($tmp_arr[$i-1]);
if(count($tmp_arr)==1){
return $tmp_arr[$i];
}
}
}else{
$tmp_arr[$count]=$tmp_arr[$i-1];
unset($tmp_arr[$i-1]);
echo '<pre>';
print_r($tmp_arr);
$count++;
}
}
}
?>