约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)
1问题来历编辑
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第...
分类:
其他好文 时间:
2015-05-12 13:45:35
阅读次数:
247
功能:约瑟夫问题众所周知,原始的约瑟夫问题是这样的:有n个人,编号为1,2,...,n,站成一圈,每次第m个将会被处决,直到只剩下一个人。约瑟夫通过给出m来决定赦免其中的一个人。例如当n=6,m=5时,5,4,6,2,3将会被依次处决,而1将会幸免。假如有k个好人,和k个坏人,所有人站成一圈,前k个...
分类:
其他好文 时间:
2015-05-06 22:53:39
阅读次数:
262
题目链接:http://acm.swjtu.edu.cn/JudgeOnline/showproblem?problem_id=2213思路分析:该问题与约瑟夫问题相似;每次将前n张牌放到队列的最后,可以将整个队列看做一个环,每次向前移动n步,则下一张牌的号码即被编号为n,并在该环中除去该牌,在继续...
分类:
其他好文 时间:
2015-04-26 22:44:32
阅读次数:
192
题目描述
n个数排成一个圈。第一次删除m,以后每k个数删除一次,求最后一个被删除的数。
题目分析
首先为了取模,n个人编号为0,1,2......n-1,当只有1个人时,肯定是编号为0的(只有它),所以dp[1]=0,
当有两个人时,最后剩下的(dp[1]+k)%2,就是反向思考的过程,于是dp[i]=(dp[i-1...
分类:
其他好文 时间:
2015-04-24 09:13:13
阅读次数:
246
问题描述:编号为1,2… n 的n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1 开始顺序报数,报到m 时停止报数,报m 的人出列,将他的密码作为新的m 值,从他的顺时针方向上的下一个开始重新从1 报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。
基本功能要求:
1)利用单循环链表作为存储结构模...
分类:
其他好文 时间:
2015-04-23 00:04:39
阅读次数:
184
swustoj 142猴子报数(0142)Time limit(ms): 1000Memory limit(kb): 65535Submission: 1338Accepted: 830问题描述:n个猴子围坐一圈并按照顺时针方向从1到n编号,从第s个猴子开始进行1到m的报数,报数到第m的猴子退出报数...
分类:
其他好文 时间:
2015-04-17 19:51:15
阅读次数:
112
什么是约瑟夫问题?
约瑟夫问题是一个有趣的数学游戏,游戏规则如下:
1、N个人围成一个圈,编号从1开始,依次到N。
2、编号为M的游戏参与者开始报数,报数从1开始,后面的人报数接龙,直到K为止,报数为K的人将出局。
3、出局者的下一个玩家接着从1开始报数,如此循环,直到剩下一个玩家时游戏结束,这个玩家就是游戏获胜者。
那么问题来了,哪个编号是游戏获胜者呢?
下面通过简单的几行pytho...
分类:
编程语言 时间:
2015-04-14 18:03:47
阅读次数:
166
最近自学了约瑟夫问题,看了别人写的文章和帖子也是千篇一律,虽然没有错误,但是一些关键的地方总是一笔带过.对像我一样的初学者造成了很大的困扰.
自己也思考了很久,这里说下我的思考过程
当然,在这里我只讲如何快速的求出最后剩下的人.
约瑟夫问题:编号从1-n的n个人围成一圈,从1开始每隔m个人就被干掉一个,问最后剩下的人的编号.(例如当n=5,m=3时,结果是4)
(1)首先讲第一点
我们知...
分类:
其他好文 时间:
2015-04-05 09:05:05
阅读次数:
133
最近写广搜,突发奇想看能不能用队列来模拟约瑟夫问题,然后就a了这道题,用队列居然比链表慢不了多少。
#include
#include
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int a[2*n];
queueroot;
for(int i=0;i<2*n;i++)
{
a[i]=1;...
分类:
其他好文 时间:
2015-04-02 22:43:32
阅读次数:
169
传送门:Josephus Problem题意:经典约瑟夫问题,有n个人,每次数到第k个人出列,求剩下的最后一人。分析:用线段树模拟约瑟夫问题,记录区间的减少情况,然后根据每次数到的人在区间排第几位,线段树log(n)找到并更新,总复杂度为O(nlog(n))。#include #include #i...
分类:
其他好文 时间:
2015-03-31 17:53:44
阅读次数:
122