美文网首页
约瑟夫环问题

约瑟夫环问题

作者: 鬼鬼812 | 来源:发表于2019-11-13 20:35 被阅读0次

f(n)表示有n个人,最后一个出局的人的编号
则f(n-1)表示有n-1个人,最后一个出局的人的编号

首先这一个大圆圈,我们从0开始给他们编号,然后开始从1报数,报数到K则出局
那么第一个出局的人,他的下标编号就是K-1

有一个出局的人之后,从他的下一个开始重新给他们编号,那么就是n-1个人,刚才编号是K的现在更新他的编号是0


灵魂画师.png

0 -- 1 -- 2 -- 3 (f[n-1],即更新后最后一个出局的人的下标编号)
k -- k+1 -- k+2 -- k+3 (最后出局的人原本的的下标编号)

那么我们就找到了 f(n-1) 和 f(n) 的一个对应关系
f(n) = (f(n-1) + k) % n

代码实现如下:


using namespace std;

const int N = 1000010;
int n, k;
int f[N];

int main()
{
    f[1] = 0;
    cin >> n >> k;
    for(int i = 2; i <= n ; i++)    f[i] = (f[i-1] + k) % i;
    
    cout << f[n] + 1 << endl;
}

相关文章

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

  • 约瑟夫环问题

    0~n-1个数排成环,每次从中删除第m个数字后,问最后剩下的数字是多少 思路:使用链表模拟环状结构,到达尾部时使其...

  • 约瑟夫环问题

    思路 递推,f(n)与f(n-1)的关系,已经f(1)已知,O(n)的复杂度求出结果。f(n) = (f(n-1)...

  • 约瑟夫环问题

    约瑟夫环:30个人(15个教徒和15个非教徒)坐船出海 船坏 需要把15个人扔到海里 其他人才能幸存 围成一圈从某...

  • 约瑟夫环问题

    参考文章 约瑟夫环之二(用递归的思想解决Josephus问题) 解释 解法 初始情况: 0, 1, 2 ........

  • 约瑟夫环问题

    问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编...

  • 约瑟夫环问题

    题目:一圈人围坐,以数字K位第一个个人,叫道 M 的人自动出列,请写出出列顺序 第一种方法:使用单项循环链表实现 ...

  • 约瑟夫环问题

    在刷leetCode 的时候碰到了以下问题:给定一个从1 到 n 排序的整数列表。首先,从左到右,从第一个数字开始...

  • 约瑟夫环问题

  • 约瑟夫环问题

    问题描述 历史典故: 据说著名犹太历史学家 Josephus有过以下的故事: 在罗马人占领乔塔帕特后,39 个犹太...

网友评论

      本文标题:约瑟夫环问题

      本文链接:https://www.haomeiwen.com/subject/nqvkictx.html