Solution 18 約瑟夫環問題

2022-08-02 00:27:16 字數 729 閱讀 5218

問題描述

n個數字(0,1,...,n-1)形成乙個圓圈,從數字0開始。每次從這個圓圈中刪除第m個數字,然後從被刪除的下乙個繼續刪除第m個元素,以此類推。

直到最後剩下乙個數字,求出該數字。

解決思路

1. 使用迴圈鍊錶模擬這一過程,計數器計數;

2. 遞迴思路

程式

public class josephloop 

int 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的那個小朋友要出列唱首歌,然後可以在禮品箱中任意的挑選禮...