Josephus Problem
Josephus Problem
有n個人圍成一圈,現在從第一個人開始報數,數到第m人時,就殺掉這第m人;然後從被殺的下一位繼續重新報數,數到第m人時,就殺掉這第m人。如此不斷數m人、殺此人,直到最後會剩下一個人,請問他是誰?
這個美式風格的問題似乎有點殘酷。如果改成「不斷數m個人,被點名的人就臉頰泛紅,害羞的跑開了」這樣應該會童真一點。
Josephus Problem: Simulation
直接模擬「不斷數m個人,被點名的人就臉頰泛紅,害羞的跑開了」這個行為。時間複雜度為 O(nm)。
有個加速的小手段是:當要數的人數超過實際人數時,可以取一下模數。