本文實(shí)例講述了C#約瑟夫問(wèn)題解決方法。分享給大家供大家參考。具體分析如下:
決約瑟夫問(wèn)題描述如下:
設(shè)有n個(gè)人圍坐一圈,現(xiàn)以某個(gè)人開(kāi)始報(bào)數(shù),數(shù)到m的人出列,接著從出列的下一個(gè)人開(kāi)始重新報(bào)數(shù),數(shù)到m的人又出列,如此下去,直到所有人都出列為止.按出列順序輸出.
public class Josephas  //從第start人開(kāi)始計(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];    //對(duì)數(shù)組s賦初值,第一個(gè)人序號(hào)為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;   } }希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選