求猴子选大王的C#代码
C#代码要求编程实现:1.猴子选大王问题描述:m只猴子围坐一圈,从1开始报数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。...
C#代码 要求编程实现: 1.猴子选大王问题描述:m只猴子围坐一圈,从1开始报数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 2.输入数据: 输入m,n。 3.输出形式: 按照出列顺序输出猴子的编号。 望说明思路 谢谢
展开
1个回答
展开全部
这应该是约瑟夫环问题,如果c来做肯定链表最合适,C#的话,以前收藏的代码 public class Josephas //从第start人开始计数,以alter为单位循环记数出列,总人数为total public int [ ] Jose(int total, int alter, int start) { int i, j, k = 0; //count数组存储按出列顺序的数据,以当结果返回 int[] count = new int [ total+1]; //s数组存储初始数据 int[] s = new int [ total+1]; //对数组s赋初值,第一个人序号为0,第二人为1,依此下去 for (i = 0; i <total; i++) { s[i] = i; } //按出列次序依次存于数组count中 for (i = total; i >= 2; i--) { start = (start + alter - 1) % i; if (start == 0) start = i; count[k] = s[start]; k++; for (j = start + 1; j <= i; j++) s[j - 1] = s[j]; } count[k]=s[1]; //结果返回 return count; } }
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询