//猴子选大王
// 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号,
function mokey(
m,
m
,
n){
for(
i=1;
i
=
1
;
i<
m+1;
m
+
1
;
i++){
arr[]=
a
r
r
[
]
=
i;
}
i=0;while(count(
i
=
0
;
w
h
i
l
e
(
c
o
u
n
t
(
arr)>1){
if(($i+1)%$n == 0){
unset($arr[$i]);
}else{
array_push($arr,$arr[$i]);
unset($arr[$i]);
}
$i++;
}
return $arr;
}
以上是可以解决的,已经试过了。
还有一种方式是用array_slice() 但是我没有写好,欢迎留言讨论
// function monkey2(
m,
m
,
n,current=0){
//
current=0){ //
count =
n;//
n
;
/
/
num = 1;
// if( n == 1){
// echo “猴子的编号为”.
n == 1){ // echo “猴子的编号为”.
n;
// return ;
// }else{
// while(
num++<
n
u
m
+
+
<
n ){
//
current++;//
c
u
r
r
e
n
t
+
+
;
/
/
current =
current
c
u
r
r
e
n
t
n ;
// }
// echo “被踢出局的猴子为”.
current;//arraysplice(
c
u
r
r
e
n
t
;
/
/
a
r
r
a
y
s
p
l
i
c
e
(
m,
current,1);//monkey(
c
u
r
r
e
n
t
,
1
)
;
/
/
m
o
n
k
e
y
(
m ,
n,
n
,
current);
// }
这个是失败的,没写好。