×

php猴子选大王

php猴子选大王(猴子选大王c语言代码)

admin admin 发表于2023-04-04 00:00:13 浏览42 评论0

抢沙发发表评论

本文目录一览:

PHP算法之猴子选大王

一群猴子要选新猴王。新猴王的选择方法是:让M只候选猴子围成一圈,从某位置起顺序编号为1~M号。从第1号开始报数,每轮从1报到N,凡报到N的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?

请输入猴子的数量m 11

请输入要排除第几个猴子n 3

7

常规做法又两种,一种是数组,一种是链表,(数学方法不考虑)。对于数组方法测试了两种思路,第一种是生成一个键为1-M的关联数组,值为true,退出的键值为false;另一种是值为1-M的数值数组,退出的unset;结果是使用unset效率更高些。链表是用数组模拟的链表,生成键为1-M的关联数组,值为下一位的键值,最后一位的值为1。退出了就把上一位和下一位链接起来。测试表明,使用链表的速度快于数组。-php猴子选大王

C++猴子选大王问题

花了一点时间思考才写出来的。由于采用遍历数组作为while循环的条件表达式,所以开销较大,应该可以优化的.

程序代码:

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;iarr.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(marrlen)

{

m=0;

}

}

for(i=0;iarr.length;i++)

{

if(arr[i]!=0)

{

alert("猴王是:"+arr[i]);

}

}

/script

c++猴子选大王问题

是不是n个猴子报数选大王的题目?给20分,帮你写的明明白白,注释都可以一条条带上

基本思路:将猴子进行编号放入一个素组,然后外层以个while循环,控制猴子数量,循环条件为个数大于1.内层for循环遍历猴子,用一个变量来计算报数,假设报到3就退出的话··当计数等于3··就将数组元素赋为0;人数也减一个··最后循环输出数组元素··元素值不为0的就是大王-php猴子选大王