n个猴子坐一圈轮流1、2、3报数,每报到3的猴子则出列。最后剩下的那只为猴王。请用php编写一个函数,输入为猴子的个数和报数的起始位置,返回值为猴王的序号
$n || $begin<=0)return false; //初始化数组,使其内部指针指向传进函数的“开始位置” $arr = array(); for($i=1;$i<=$n;$i++)$arr[] = $i; for($i=1;$i<$begin;$i++,next($arr)); while(count($arr)>1) //当数组大小不为1时循环报数 { //报数,往后数两位 for($i=0;$i<2;$i++) { if(!next($arr))reset($arr); } //获得报数3位置的键、值(此处内部指针会前进一步) $key = each($arr); if(!current($arr)) //如果报数到3的位置是数组末端,及通过each后,指针超出了数组的范围 { reset($arr); //将内部指针重置到数组首部 array_pop($arr); //删除数组末端的键、值 } else { prev($arr); //否则指针回退一格 unset($arr[$key['key']]); //删除报数为3的键、值 } } if(!current($arr))reset($arr); //循环过后,因为each操作,内部指针有可能超越了数组末端,需要重置 return current($arr); } echo fun(5,3); ?>
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了猴子数数问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
已抢16105个
抢已抢49101个
抢已抢4209个
抢已抢1848个
抢已抢2267个
抢已抢3769个
抢