题目说明: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人 开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新...
分类:
编程语言 时间:
2015-09-23 14:43:23
阅读次数:
281
题目来源:《剑指offer》面试题45 题目:0,1,。。。,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 解法一:经典解法,用环形链表模拟圆圈。这种方法每删除一个数字需要m步运算,总共有n个数字,因此总的时间复杂度是O(mn)...
分类:
编程语言 时间:
2015-09-19 16:46:31
阅读次数:
156
约瑟夫问题升级问题编号为1~N的N个人按顺时针方向围坐一圈,每个人持有一个密码(正整数,可以自由输入),开始人选一个正整数作为报数上限值M,从第一个人按顺时针方向自1开始顺序报数,报道M是停止报数。报M的人出列,将他的密码作为新的M值,从他的顺时针方向上的下一个人开始从1报数,如此下去,直至所有人全...
分类:
其他好文 时间:
2015-09-17 21:38:31
阅读次数:
144
利用循环链表模拟约瑟夫问题,把自杀的人的顺序排列出来代码如下: 1 #include 2 #include 3 4 typedef int status; 5 6 typedef struct node 7 { 8 status data; 9 struct node *next...
分类:
其他好文 时间:
2015-09-17 21:25:53
阅读次数:
134
约瑟夫环问题的原来描述为,设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出..
分类:
其他好文 时间:
2015-09-08 07:19:36
阅读次数:
172
每年六一儿童节,NowCoder都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为NowCoder的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在...
分类:
其他好文 时间:
2015-09-07 22:45:49
阅读次数:
192
/** 问题原型*/41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。约瑟夫将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。/** 问题分析*/这个问题还有一种描述为丢手绢问题,因此代码命名以shoujuan由...
分类:
其他好文 时间:
2015-09-02 00:36:04
阅读次数:
273
voidJosephCycle(PLinkList*ppList,intk){ Node*begin=*ppList; if(*ppList==NULL) { return; } while(1) { Node*del; intx=k; //只有一个节点的退出 if(begin->next==begin) { break; } while(--x) { begin=begin->next; } printf("%d,",begin->data..
分类:
其他好文 时间:
2015-08-26 00:04:44
阅读次数:
126
And Then There Was One
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 4918
Accepted: 2623
Description
Let’s play a stone removing game.
Initially, n ston...
分类:
其他好文 时间:
2015-08-14 19:14:37
阅读次数:
98
唉,说点废话,昨天偶尔看到一年前自己用C解约瑟夫环问题的循环链表,唏嘘不已,想想自己一年前嵌入式的梦呢,这两天发生了许多,而有些人不在了就真的不在了,心情不好,不多说了,直接上代码,只是些链表的基本操作,花些功夫看就好了。 首先,建立一个Node类,里面内构一个Node对象和数据(用来区分);...
分类:
编程语言 时间:
2015-08-09 20:26:50
阅读次数:
185