Home >php教程 >PHP源码 >php实现猴子选大王

php实现猴子选大王

PHP中文网
PHP中文网Original
2016-05-25 17:04:451892browse

php实现猴子选大王

/**
 * n只猴子围坐成一个圈,按顺时针方向从1到n编号。
 * 然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,
 * 再从刚出局猴子的下一个位置重新开始报数,
 * 如此重复,直至剩下一个猴子,它就是大王。
 * 
 * 设计并编写程序,实现如下功能:
 *(1)	要求由用户输入开始时的猴子数$n、报数的最后一个数$m。
 *(2)	给出当选猴王的初始编号。
 * 
 * @author Wu Junwei* 
 * @param int $n   开始时的猴子数量
 * @param int $m   报道的最后一个数(报到这个数的猴子被淘汰,然后下一个猴子重新从①开始报数)   
 * @return int 猴子的初始编号   
 */
function monkeySelectKing($n,$m)
{
    //猴子的初始数量不能小于2
    if ($n<2)
    {
        return false;
    }
    
    $arr=range(1,$n);      //将猴子分到一个数组里, 数组的值对应猴子的初始编号
    $unsetNum=0;           //定义一个变量,记录猴子的报数
    
    for ($i = 2; $i $v)
        {
            $unsetNum++;        //每到一个猴子, 猴子报数+1

      //当猴子的报数等于淘汰的数字时:淘汰猴子(删除数组元素),报数归0(下一个猴子从1开始数)
            if ($unsetNum==$m)   
            {
//                echo "";  //打开注释,可以看到具体的淘汰过程
//                print_r($arr);
                unset($arr[$k]);    //淘汰猴子              
                $unsetNum=0;        //报数归零
                
                if (count($arr)==1) //判断数组的长度, 如果只剩一个猴子, 返回它的值
                {
                    return reset($arr);
                }
            }
        }
    }
    
}

var_dump(monkeySelectKing(6, 3));		            		        	
			

 以上就是php实现猴子选大王的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn