请高手解决猴子选大王问题
M只猴子选大王M只猴子选大王,方法:所有猴子按1……M编号围成一圈,从第一个开始按顺序1,2,3报数,报到3的退出,如此循环,直到最后一只,那只就是猴王。
程序代码:<script>
//假设7个猴子围成一圈.将7个猴子存储在一个数组中
var arr=new Array(7);
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
arr[4]=5;
arr[5]=6;
arr[6]=7;
//数组最大下标
var arrlen=arr.length-1;
//检测数组是否还剩一个不为0的元素值,0表示该猴子已退出
function remainOne()
{
var count=0;
for(i=0;i<arr.length;i++)
{
if(arr[i]!=0)
{
count++;
}
}
if(count==1)
{
return false;
}else{
return true;
}
}
var k=0;
var m=0; //m为数组的动态下标
//不断循环数猴子一直数到剩下一个为止
while(remainOne())
{
if(arr[m]!=0)
{
++k;
}
//当k=3时表示数到第三只猴子,则该猴子退出
if(k==3)
{
//将k重置为0,重新开始数
k=0;
//该位置的猴子退出
arr[m]=0;
}
m++;
//如果m超出了最大的数组下标,则从最小下标重新开始
if(m>arrlen)
{
m=0;
}
}
for(i=0;i<arr.length;i++)
{
if(arr[i]!=0)
{
alert("猴王是:"+arr[i]);
}
}
</script>