约瑟夫环问题,即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人再出列,如此循环,直到所有人都出列为止。最后按出列顺序输出。代码如下:
//从第start人开始计数,以alter为单位循环记数出列,总人数为total public int[] Jose(int total, int start,int alter) { int j, k = 0; //count数组存储按出列顺序的数据,以当结果返回 int[] count = new int[total + 1]; //s数组存储初始数据 int[] s = new int[total + 1]; //对数组s赋初值,第一个人序号为0,第二人为1,依此下去 for (int i = 0; i < total; i++) { s[i] = i; } //按出列次序依次存于数组count中 for (int 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; }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, int
, 次序 文件 c#
, count
, c语言 报数 算法
, s代码顺序问题
, total
, start
, 数据结构 约瑟夫环
, c#算法数组
, 约瑟夫问题
, 约瑟夫环
约瑟夫
,以便于您获取更多的相关知识。
时间: 2025-01-02 12:11:22