n원숭이는 원형으로 앉아서 차례로 1, 2, 3을 보고합니다. 원숭이가 3을 보고할 때마다 대기열에서 나옵니다. 마지막 남은 사람은 원숭이 왕입니다. PHP로 함수를 작성해주세요. 입력은 원숭이 수, 반환값은 원숭이 왕의 일련번호입니다.
<?php function fun($n,$begin) { //输入判断 if(!is_int($n) || $n<=0)return false; if(!is_int($begin) || $begin>$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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.