约瑟夫环算法
首先闡述一下問題:n個人(編號0—n-1)圍成一圈,從1開始報數,報到m的人出列,然后從出列的人的下一個人開始,從1開始報數,報到m的人出列,求出最后幸存的那個人的原始編號。
如果單純的是模擬整個游戲過程的話,實現起來并不難。今天我學習到的是另一種算法。舉個例子,第一輪以后,假設被淘汰的人編號是k-1,報數是m,那么接下來的n-1的應該是這樣排序x`(x),x`表示上一輪的編號,x表示本輪的編號。那么目前的情況應該是這樣的k(0)、k+1(1)、k+2(2)、……、k-2(n-2),我們可以得出這么一個公式x`=(x+k)%N因為最后一個幸存者他最后的編號一定是0,那么有此推出他的上一輪編號……直到推出一開始的編號為止
轉載于:https://www.cnblogs.com/lurongrong/p/4333979.html
總結
- 上一篇: WindowsForm 计算器
- 下一篇: NativeScript