C#約瑟夫問題解決方法
更新時(shí)間:2015年04月21日 15:43:18 作者:ishare
這篇文章主要介紹了C#約瑟夫問題解決方法,較為詳細(xì)的分析了約瑟夫問題及C#解決技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了C#約瑟夫問題解決方法。分享給大家供大家參考。具體分析如下:
決約瑟夫問題描述如下:
設(shè)有n個(gè)人圍坐一圈,現(xiàn)以某個(gè)人開始報(bào)數(shù),數(shù)到m的人出列,接著從出列的下一個(gè)人開始重新報(bào)數(shù),數(shù)到m的人又出列,如此下去,直到所有人都出列為止.按出列順序輸出.
public class Josephas //從第start人開始計(jì)數(shù),以alter為單位循環(huán)記數(shù)出列,總?cè)藬?shù)為total public int [ ] Jose(int total, int alter, int start) { int i, j, k = 0; //count數(shù)組存儲(chǔ)按出列順序的數(shù)據(jù),以當(dāng)結(jié)果返回 int[] count = new int [ total+1]; //s數(shù)組存儲(chǔ)初始數(shù)據(jù) int[] s = new int [ total+1]; //對數(shù)組s賦初值,第一個(gè)人序號為0,第二人為1,依此下去 for (i = 0; i <total; i++) { s[i] = i; } //按出列次序依次存于數(shù)組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]; //結(jié)果返回 return count; } }
希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二
這篇文章繼續(xù)介紹了C#數(shù)據(jù)類型和變量,是對上一篇文章的補(bǔ)充,希望對大家的學(xué)習(xí)有所幫助。2015-10-10c#使用nsoup解析html亂碼解決方法分享 nsoup教程
NSoup是JSoup的Net移植版本。使用方法基本一致。如果項(xiàng)目涉及HTML的處理,強(qiáng)烈推薦NSoup。但是遺憾的是NSoup默認(rèn)的編碼是UTF-8,處理中文有亂碼,下面給出二種解決方法2014-01-01