初級演算法 約瑟夫圓環

2022-06-16 15:33:14 字數 585 閱讀 8625

很著名的乙個問題。

簡單描述,n個人坐成一圈,然後按k的順序將人剔除,直到剩下最後乙個人。

參考:約瑟夫問題

我的思路就是將n個人標誌為0,按k的順序剔除的人改為標誌1。 **如下:

#include int

main()

if (count_ > 1

)

}if (count_ == 1

)

while (count !=n)

++k;

if (k ==total)

}k -= 1

;

if (k < 0

)

else

count = 0

;

}for (i=0; i < total; i++)

}delete

nums;

return0;

}

標號是從陣列下標0開始的,而不是從下標1開始的。

注意:使用memset初始化int陣列為1時,會出現問題。所以我初始化為0了。

約瑟夫圓環問題

如下 include include include int main 讓陣列迴圈起來 person n 1 編號為n的下乙個人的編號是1 node 1 while node person node count printf d person node 輸出被殺的人編號 person node pe...

約瑟夫演算法

宣告 本文僅為個人查閱方便所轉,版權為原文作者 本演算法僅適用於找出最後的勝利者,而不是得到出列序列。此方法從考慮n 1個人中最終勝利者 最後乙個沒有出列的人是誰 遞推到n個人時最終勝利者是誰。但是並不能得到出列的序列。無論是用鍊錶實現還是用陣列實現都有乙個共同點 要模擬整個遊戲過程,不僅程式寫起來...

約瑟夫演算法

大牛的!aclayton s acm icpc life 只切菜題 菜鳥亂飛 路漫漫其修遠兮 我要上下左右東南西北中發白而求索 在沒有明白約瑟夫問題之前,只能用模擬來做.約瑟夫問題是這樣的 假設n個人,編號為1到n,排成乙個圈,順時針從1開始數字m,數到m的人殺了,剩下的人繼續遊戲.活到最後的乙個人...