程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 常用算法:C#約瑟夫環問題

常用算法:C#約瑟夫環問題

編輯:關於C#

約瑟夫環問題,即設有n個人坐成一個圈,從某個人開始報數,數到m的人出列,接著從出列的下一個人開始重新報數,數到m的人再出列,如此循環,直到所有人都出列為止。最後按出列順序輸出。代碼如下:

//從第start人開始計數,以alter為單位循環記數出列,總人數為total  
public int[] Jose(int total, int start,int alter) 
{ 
    int j, k = 0; 
    //count數組存儲按出列順序的數據,以當結果返回  
    int[] count = new int[total + 1]; 
    //s數組存儲初始數據  
    int[] s = new int[total + 1]; 
    //對數組s賦初值,第一個人序號為0,第二人為1,依此下去 
    for (int i = 0; i < total; i++) 
    { 
        s[i] = i; 
    } 
    //按出列次序依次存於數組count中  
    for (int 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; 
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved