問題描述
n個數字(0,1,...,n-1)形成乙個圓圈,從數字0開始。每次從這個圓圈中刪除第m個數字,然後從被刪除的下乙個繼續刪除第m個元素,以此類推。
直到最後剩下乙個數字,求出該數字。
解決思路
1. 使用迴圈鍊錶模擬這一過程,計數器計數;
2. 遞迴思路
程式
public class josephloopint cnt = n;
boolean p = new boolean[n];
int k = 0;
while (cnt > 1) }}
} for (int i = 0; i < p.length; i++)
} return -1; }
// recursion
public int josephlooprec(int n, int m)
return helper(n, m, n) + 1;
} private int helper(int n, int m, int i)
return (helper(n - 1, m, i - 1) + m) % n;
}}
18 約瑟夫環
用單迴圈鍊錶做的。這是約瑟夫環 include using namespace std typedef struct node link void josephus int n,int m else tail next head 迴圈鍊錶建成 first指標指向每次開始的節點,最後一次時它應該指向自...
使用順序錶類SeqList求解約瑟夫環問題
約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。順序錶類seqlist參考 約瑟夫環運作如下 1 一群人...
孩子們的遊戲 圓圈中最後剩下的數 約瑟夫環問題
每年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。hf作為牛客的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的 首先,讓小朋友們圍成乙個大圈。然後,他隨機指定乙個數m,讓編號為0的小朋友開始報數。每次喊到m 1的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮...