C#约瑟夫问题解决方法
更新时间:2015年04月21日 15:43:18 作者:ishare
这篇文章主要介绍了C#约瑟夫问题解决方法,较为详细的分析了约瑟夫问题及C#解决技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了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#程序设计有所帮助。
相关文章
C#优雅的实现INotifyPropertyChanged接口
这篇文章介绍了C#实现INotifyPropertyChanged接口的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-08-08


最新评论