VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#约瑟环问题

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  约瑟夫环问题,即设有n个人坐成一个圈,从某个人开始报数,数到m的人出列,接着从出列的下一个人开始重新报数,数到m的人再出列,如此循环,直到所有人都出列为止。最后按出列顺序输出。代码如下://从第start人开始计数,以alter为单位循环记数出列,总人数为total 
publicint[]Jose(inttotal,intstart,intalter)
{
  intj,k=0;
  //count数组存储按出列顺序的数据,以当结果返回 
  int[]count=newint[total+1];
  //s数组存储初始数据 
  int[]s=newint[total+1];
  //对数组s赋初值,第一个人序号为0,第二人为1,依此下去
  for(inti=0;i<total;i++)
  {
    s[i]=i;
  }
  //按出列次序依次存于数组count中 
  for(inti=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;
}



相关教程