约瑟夫环问题简介 约瑟夫环问题的原来描述为,设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出圈的次序。 ...
分类:
其他好文 时间:
2018-11-02 00:25:28
阅读次数:
178
传送门 这道题被严重恶意评分了,实际应该是绿题。 因为其实我们只需要模拟即可。这里我们引入一种新的东西:约瑟夫环。 它能直接告诉你约瑟夫问题中最后一个存活下来的人是谁。(不过下标是从0开始的,实际使用的时候需要+1) 如果有n个人,每次报到m的时候出列,那么令f[i]表示有i个人的时候最后存活的人的 ...
分类:
其他好文 时间:
2018-10-31 22:36:24
阅读次数:
228
相关题目:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。 ...
分类:
其他好文 时间:
2018-10-31 11:19:27
阅读次数:
157
题目:设有x个人坐成一个圈,序号为依次为1,2,3......x,选定一个数字n,从1号开始从1报数,每次报到数字n时那个人自杀剩下的人继续从1开始报数,直到所有人都出列,求所有人自杀的顺序。(惊恐万分) ...
分类:
其他好文 时间:
2018-10-24 22:11:54
阅读次数:
137
问题描述:n个人围成一个圈,从第一个人开始数1,数到第k个出局,然后下一个人继续从1数,求出局人编号 思路:将所有人编号放到数组里,一个人出局后,下一个人加上k对数组长度求余,得出下一个要删除的编号。 k的值可以大于n,测试了下应该没问题。 看了好多网上的例子,这道题的解法也很多,感觉这个还是比较能 ...
分类:
编程语言 时间:
2018-10-21 22:56:09
阅读次数:
257
约瑟夫环问题的两种解法(详解) 题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。于是决定了自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀。然后下一个重新报数,直到所有人都自杀身亡为止。 ...
分类:
其他好文 时间:
2018-10-21 21:53:43
阅读次数:
310
# include <stdio.h> #define MAXLEN 20 int front=MAXLEN-1;//队列初始化 int rear=MAXLEN-1; enqueue(int q[],int x) //入队 { rear=(rear+1)%MAXLEN; q[rear]=x; } i ...
分类:
编程语言 时间:
2018-10-18 01:10:13
阅读次数:
259
约瑟夫(Joseph)环问题 编号为1,2,...,n的n个人按顺时针方向围坐一圈,每人持有一个密码。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直到 ...
分类:
其他好文 时间:
2018-10-15 23:25:23
阅读次数:
366
编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报数上限值m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个 ...
分类:
其他好文 时间:
2018-10-14 11:40:14
阅读次数:
238