首页 > 编程 > C# > 正文

C#约瑟夫问题解决方法

2020-01-24 01:57:55
字体:
来源:转载
供稿:网友

本文实例讲述了C#约瑟夫问题解决方法。分享给大家供大家参考。具体分析如下:

决约瑟夫问题描述如下:

设有n个人围坐一圈,现以某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人又出列,如此下去,直到所有人都出列为止.按出列顺序输出.

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;   } }

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表