猴子选大王
这个是已知的一种问题的一种算法:仅代表自己学习:
有13只猴子 围坐一个圈分别编号为1-13 其中的规则是 从1开始数数,数到四 那个猴子 就算落选,到落选后的 下一个猴子接着又从1 开始 这种圆圈循环式淘汰。最终 是几号猴子当选(以开始分的编号为准);
思路:首先应该定义 这13只猴子 我们所学的只有数组 和 链表 可以 存储 集合;
下面先是数组实现:C#(实现)其他语言类似。。
static void Main(string[] e)
{
int[] array=new int[13]{1,1,1,1,1,1,1,1,1,1,1,1,1};//定义数组表示13个数据;
int HouXuanHou=13;
int ArrayXiaBiao=0;
int cout;
while(HouXuanHou>1)
{
cout=1;
while(cout<5)
{
ArrayXiaBiao++;
if(ArrayXiaBiao>12)
{
ArrayXiaBiao-=13;
}
if(array[ArrayXiaBiao]==1)
{
cout++;
}
}
array[ArrayXiaBiao]=0;
HouXuanHou--;
}
for(int i=0;i<13;i++)
{
Console.Write(array[i].ToString());
}
Console.ReadKey();
}
浙公网安备 33010602011771号