約瑟夫環的一種簡單解法

2021-07-10 18:08:53 字數 373 閱讀 7661

首先還是描述一下約瑟夫環問題吧:n個人圍成乙個圈,從第乙個人開始數數(從1開始數),每數到3(當然這個數字可以隨便定),數到3的那個人就退出,接著,他的下乙個人又從1開始數.......迴圈不斷,剩下的k個人就是勝利者(當人,這個人數也可以隨便定)。

接下來的**是利用乙個陣列模擬環,對該陣列進行相應的操作,如果數到3,那麼就對陣列那個數置零,最後看陣列當中哪些數非零就是勝者了。

**如下:

public static void main(string args)

else if(count==3)//如果數到3就將其置零,並移動到下乙個人,並把下乙個人要數的數變為1

else//以上情況都不是則輪到下乙個人

}for(int k=0;k

約瑟夫環的兩種解法

n個人想玩殘酷的死亡遊戲,遊戲規則如下 n個人進行編號,分別從1到n,排成乙個圈,順時針從1開始數到m,數到m的人被殺,剩下的人繼續遊戲,活到最後的乙個人是勝利者。請輸出最後乙個人的編號。input 輸入n和m值。m 1。output 輸出勝利者的編號。sample input 5 3sample ...

約瑟夫環的三種解法

有n個程式猿 編號1 n 圍成一圈順序迴圈報數,從第乙個猿開始報數 從1到4報數,猿都是順序排列成一圈的 凡報到4的猿退出圈子,以下乙個為1繼續報數,問最後留下的是原來第幾號的那位。題目的意思大致是這樣,比如最開始有五個人編號為1 2 3 4 5 第二輪起點是5,去掉3 第三輪起點是5,去掉5 第四...

約瑟夫環的三種解法

約瑟夫問題是個有名的問題 n個人圍成一圈,從第乙個開始報數,第m個將被殺掉,最後剩下乙個,其餘人都將被殺掉。n個人從1開始編號,問最後活下來的人的編號是多少。include using namespace std intmain printf 遊戲結束,所有人死亡 n return0 主要是利用遞推...