约瑟夫环是一个很有意思的算法。大意就是:罗马人占领了乔塔帕特,41个人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家约瑟夫(Josephus)和他的一个朋友。剩余的31个人为了表示不想罗马人屈服,决定集体自杀。大家决定了一个自杀方案,所有这41个人围成一个圈,由第1个人开始顺时针报数,每报数为3的人立刻就自杀,然后再由下一个人重新开始报数,仍然是每报数为3的人就立刻自杀,直到所有人都自杀
分类:
编程语言 时间:
2018-01-27 19:10:25
阅读次数:
145
基础算法之一——模拟法“约瑟夫环问题” 题目描述 有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外。剩下的猴子再接着从1开始报数,就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。编程输入n和m,输出最后猴王的编号。 输入数据 每行是用空格 ...
分类:
编程语言 时间:
2018-01-27 18:59:40
阅读次数:
147
问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 一般我们采用一个循环队列来模拟约瑟夫环的求解过程,但是如果n比较大的时候,采用模拟的方式求解,需要大量的时间来模拟退出的过程,而且由于需要占用大量的内存空间来模拟队列中的n个人,并 ...
分类:
其他好文 时间:
2017-12-31 21:11:33
阅读次数:
173
King's Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 832 Accepted Submission(s): 460 Probl ...
分类:
其他好文 时间:
2017-12-16 22:10:18
阅读次数:
275
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。 例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。 Input 2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6) Outpu ...
分类:
其他好文 时间:
2017-12-07 00:14:00
阅读次数:
168
动态规划 线性dp 区间dp 树形dp 线段树优化 前缀和优化 单调队列优化 滚动数组优化内存 (状压dp,数位dp,斜率优化,矩阵乘法加速) 数据结构 堆 栈 队列 双向链表(约瑟夫环) 树状数组 线段树 (树剖,主席树,平衡树,树套树,kd tree,动态树) 图论 MST 最短路 Tarjan ...
分类:
其他好文 时间:
2017-11-25 11:16:28
阅读次数:
160
约瑟夫环 f[i]表示有i个人先处理第k个人,最后被处理的人是谁 ...
分类:
其他好文 时间:
2017-11-20 01:19:09
阅读次数:
210
约瑟夫环变式 设f[i][j]表示处理i个人,按照处理顺序,倒数第j个人是谁 则有f[i][j]=(f[i-1][j]+k)%i ...
分类:
其他好文 时间:
2017-11-20 01:07:35
阅读次数:
143
方便求解最后的胜利者同时也适合打印 出列 序列的,时间复杂度O(N). 下面方法借鉴自Java程序练习-约瑟夫环问题 在有时候需要知道出列的序列,上述System.out部分就是出列序列 首先我们通过思考可以得到一个很显然的结论,n个人时的获胜者和这n个人淘汰掉一个人继续游戏下的获胜者一定是同一个人 ...
分类:
其他好文 时间:
2017-11-18 11:14:54
阅读次数:
114
有关约瑟夫环的问题一般需要考虑重标号,就是上一个被砍的人后面那个人开始重新0,1,2...这样子标 p[i][j][k]表示第i轮,原来编号为j(0->n-1)的人的新的编号为k的概率 ...
分类:
其他好文 时间:
2017-11-07 22:01:33
阅读次数:
143