c#

位置:IT落伍者 >> c# >> 浏览文章

C#约瑟夫环问题


发布日期:2022年11月13日
 
C#约瑟夫环问题

约瑟夫环问题即设有n个人坐成一个圈从某个人开始报数数到m的人出列接着从出列的下一个人开始重新报数数到m的人再出列如此循环直到所有人都出列为止最后按出列顺序输出代码如下

//从第start人开始计数以alter为单位循环记数出列总人数为total

publicint[]Jose(inttotalintstartintalter)

{

intjk=;

//count数组存储按出列顺序的数据以当结果返回

int[]count=newint[total+];

//s数组存储初始数据

int[]s=newint[total+];

//对数组s赋初值第一个人序号为第二人为依此下去

for(inti=;i<total;i++)

{

s[i]=i;

}

//按出列次序依次存于数组count中

for(inti=total;i>=;i)

{

start=(start+alter)%i;

if(start==)

start=i;

count[k]=s[start];

k++;

for(j=start+;j<=i;j++)

s[j]=s[j];

}

count[k]=s[];

//结果返回

returncount;

}

               

上一篇:关于C# readonly关键字的分析

下一篇:基于消息与.Net Remoting的分布式处理架构