熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#約瑟夫環問題

2013-11-13 10:25:14  來源: .NET編程 

  約瑟夫環問題即設有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;

  }


From:http://tw.wingwit.com/Article/program/net/201311/13563.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.