猴王问题-踢猴子问题-约瑟夫算法
2009-09-21 15:29
393 查看
<?php
/*
*一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,
*从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,
*直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程。
*作者:hyc
*/
$arr = array(A,B,C,D,E,F,G); //猴子数组
function tiHouZi($arr,$num){
if($num<=1) echo '数字错误!'; //判断数的数是否为0以上的.
$lenght = count($arr);
if($lenght<=1) echo '数组错误!'; //判断数组是否符合要求:长度大于1个.
$i = 1;
while($lenght > 1){
if($i == $num){//到了M只猴子后,进行踢猴子操作
$ar = each($arr);
unset($arr[$ar[key]]);
prev($arr);
$i = 0;
}
if(next($arr) == false)reset($arr);//如果数组到了尽头,则从置数组
$i++;
$lenght = count($arr);
}
return $arr;
}
print_r(tiHouZi($arr,3));
?>
/*
*一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,
*从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,
*直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程。
*作者:hyc
*/
$arr = array(A,B,C,D,E,F,G); //猴子数组
function tiHouZi($arr,$num){
if($num<=1) echo '数字错误!'; //判断数的数是否为0以上的.
$lenght = count($arr);
if($lenght<=1) echo '数组错误!'; //判断数组是否符合要求:长度大于1个.
$i = 1;
while($lenght > 1){
if($i == $num){//到了M只猴子后,进行踢猴子操作
$ar = each($arr);
unset($arr[$ar[key]]);
prev($arr);
$i = 0;
}
if(next($arr) == false)reset($arr);//如果数组到了尽头,则从置数组
$i++;
$lenght = count($arr);
}
return $arr;
}
print_r(tiHouZi($arr,3));
?>
相关文章推荐
- 算法_php猴子选大王_约瑟夫问题
- 约瑟夫问题算法
- 证明求解约瑟夫斯问题的二进制左循环算法的正确性
- 经典算法之约瑟夫问题
- 约瑟夫问题的PHP实现——猴子选大王的问题
- 算法——猴子吃桃问题
- C语言实现的猴子吃桃问题算法解决方案
- 数据结构及算法 - 约瑟夫问题 - javascript
- C语言实现猴子选大王(约瑟夫问题)
- 约瑟夫问题,从o(n*m)到o(n)乃至o(m)的算法复杂度进阶
- Java实现的猴子吃桃问题算法示例
- 【算法详解】约瑟夫问题
- 第19周上机实践项目2——猴子选大王(约瑟夫问题)
- php实现猴子选大王问题算法实例
- 【算法学习笔记】54.约瑟夫问题 模拟、逆推动规 SJTU OJ 1038 二哥的约瑟夫
- JavaCodeTra 猴子选猴王 约瑟夫循环
- 蓝桥杯--猴子选大王-约瑟夫问题
- 经典的猴子吃桃问题,C语言算法,根据天数和当日桃子个数,求第一天猴子所摘桃的个数,
- 第二十四周项目4-猴子选大王(约瑟夫问题)
- 猴子称大王问题算法