我写的猴王算法
时间:2009-04-04
来源:互联网
<?php
/*
* filename: kingmonkey.php
* author: jiangang li
* date: April 3th, 2009
* descript: an arithmetic to a program
* program:
一群猴子排成一圈,按1,2,...,n依次编号。
然后从第1只开始数,数到第m只,把它踢出圈,
从它后面再开始数, 再数到第m只,在把它踢出去...,
如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。
要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
*/
set_time_limit(1);
function KingMokey($n, $m)
{
//将1-n只猴子顺序编号 入数组中
$monkey = range(1,$n);
//循环遍历数组元素(猴子编号)
$i=1;
while(1){
list($key,$value)=each($monkey);
if (!$value){
reset($monkey);
list($key,$value)=each($monkey);
}
if(count($monkey)==1){
break;
}
if ($i%$m == 0){
unset($monkey[$key]);
}
$i = $i % $m + 1;
}
return $value;
}
//猴子个数
$n = 10;
//踢出队伍的编号间隔值
$m = 3;
//调用猴王获取函数
print_r(KingMokey($n, $m));
?>
[/php]
作者: houlai 发布时间: 2009-04-04
有意思
作者: pardis_xiong 发布时间: 2009-04-04
得努力了!
作者: 齐迹 发布时间: 2009-04-04
作者: kukat 发布时间: 2009-04-07
作者: yangfan5 发布时间: 2009-04-08
这个问题很简单的。。
作者: houlai 发布时间: 2009-04-08
嗯,我没有说有多难,只是看大家发,手痒,也发了一个
作者: chcn001 发布时间: 2009-04-14
function king(&$king_array,&$king_out_num=1){
sort($king_array);
$king_count = count($king_array);
for ($i=0;$i<$king_count;$i++){
if ($king_out_num==3) {
unset($king_array[$i]);
$king_out_num=1;
}else {
$king_out_num++;
}
}
if (count($king_array)>1) {
king($king_array,$king_out_num);
}
}
$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
king($array);
sort($array);
echo '最后一个是:'.$array[0];
?>
作者: ant586 发布时间: 2009-04-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28