做一道题,自己写的程序老是运行不了,提示:“载入页面时到服务器的连接被重置。”题目:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号
程序:
function monkey($n,$m){
if($n<2){
return '猴子数不能小于2';
}elseif($m<2){
return '$m不能小于2';
}
//初始化 for($i=1;$i<=$n;$i++){
$monKeys[$i] =$i;
}
$s = kill($m, $monKeys);
print_r($s);
}function kill($m,$monKeys){
if(count($monKeys)==1) return $monKeys;
$cutNum = $m % count($monKeys);//删除第几个
$i=1;
foreach ($monKeys as $key=>$value){//-----------出错在这个foreach里面但找不到原因。求帮忙
if($i==$cutNum){
unset($monKeys[$key]);
break;
}
$i++;
}
return kill($m,$monKeys);
}
monkey(25, 8);----------------
求帮忙!
程序:
function monkey($n,$m){
if($n<2){
return '猴子数不能小于2';
}elseif($m<2){
return '$m不能小于2';
}
//初始化 for($i=1;$i<=$n;$i++){
$monKeys[$i] =$i;
}
$s = kill($m, $monKeys);
print_r($s);
}function kill($m,$monKeys){
if(count($monKeys)==1) return $monKeys;
$cutNum = $m % count($monKeys);//删除第几个
$i=1;
foreach ($monKeys as $key=>$value){//-----------出错在这个foreach里面但找不到原因。求帮忙
if($i==$cutNum){
unset($monKeys[$key]);
break;
}
$i++;
}
return kill($m,$monKeys);
}
monkey(25, 8);----------------
求帮忙!
$arr_l = array();
$arr_r =array();
$tot = count($monKeys);
if($tot==1)return $monKeys;
$i=1;
if($m > $tot){
$newm = $m%$tot;
if($newm==0) $newm = $tot;
foreach($monKeys as $k=>$v){
if($newm > $i){
$arr_r[] = $v;
}elseif($newm < $i){
$arr_l[]=$v;
}else{
$str =$v;
}
$i++;
}
}else{
foreach($monKeys as $k=>$v){
if($m > $i){
$arr_r[] = $v;
}elseif($m < $i){
$arr_l[]=$v;
}else{
$str = $v;
}
$i++;
}
}
if(!count($arr_l)){
$monKeys = $arr_r;
}else if(!count($arr_r)){
$monKeys = $arr_l; }else{
$monKeys =array_merge($arr_l,$arr_r);
}
echo $str .' ';
return kill($m,$monKeys);
}
for($i=0; $i<$m-1; $i++) $ar[] = array_shift($ar);才行
不过这种写法才算精彩,佩服!
这个在count($monKeys)==1时就return了呀,不会有0的情况呀。
我执行了一下你的代码,出来的是一串数字,按题目应该是得出一个数字(号)。
得出的结果好像不对呀。比如,monkey(5, 2);的时候,应该得出的结果是1才对,而程序得出的是4
其次,请观察
1,2,3,4,5
1,
2,3,4,51,
2,3,4,51,2,3,4,51,2,3,4,5你说应该得几?
说的也是。谢谢你...!
我原来的程序是错在$cutNum = $m % count($monKeys);这里没有考虑到0的情况。了。谢谢xuzuning 和 huweiwo