C#约瑟夫问题解决方法
本文实例讲述了C#约瑟夫问题解决方法。分享给大家供大家参考。具体分析如下:
决约瑟夫问题描述如下:
设有n个人围坐一圈,现以某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人又出列,如此下去,直到所有人都出列为止.按出列顺序输出.
publicclassJosephas
//从第start人开始计数,以alter为单位循环记数出列,总人数为total
publicint[]Jose(inttotal,intalter,intstart)
{
inti,j,k=0;
//count数组存储按出列顺序的数据,以当结果返回
int[]count=newint[total+1];
//s数组存储初始数据
int[]s=newint[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];
//结果返回
returncount;
}
}
希望本文所述对大家的C#程序设计有所帮助。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短