猴子选大王

这个是已知的一种问题的一种算法:仅代表自己学习:

有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();

 

}

 

 

 

posted @ 2012-07-12 23:35  see love  阅读(79)  评论(0)    收藏  举报