约瑟夫环形问题有30人将其编号,从头开始1,2,3数数,每到3将其删除,一共删去15个数。输出被删去的15个数#includeusing namespace std;struct LinkList{ int val; LinkList* next; LinkList(int a):val(a)...
分类:
其他好文 时间:
2014-07-09 23:43:04
阅读次数:
246
双向循环链表的实现2013-01-11 09:29:04 我来说两句 作者:坚持理想_面对现实收藏我要投稿在使用链表来解决约瑟夫问题的时候,用到了循环链表。循环链表又分为单向循环链表与双向循环链表,约瑟夫问题采用单项循环链表可以得到很好的而解决了,但是单向链表的很大的缺陷仍然存在,那就是在删除的时....
分类:
其他好文 时间:
2014-07-03 06:12:32
阅读次数:
308
这个是约瑟夫的另一个变型,变为总共有2*k个人,先是K个好人后是k个坏人,要求前k次都要杀坏人,即在杀掉第一个好人之前就要把所有的坏人都杀光,所以需要我们求出满足这个条件的最小的m值;
由约瑟夫的递归模型可以发现,我们因为他的递归是从最后杀的人递归到原有的人数,所以我们可以吧顺序反过来,等价于最后杀掉k个坏人,再杀好人,这样在递归的时候就是先知道起始位置(先杀的人),这样就能迭代,由有好人...
分类:
其他好文 时间:
2014-07-02 08:55:40
阅读次数:
188
题目:有编号从 1 到 n 的 n 个人坐成一圈报数,报到 m 的人出局,下一位再从 1 开始, 如此持续,直止剩下一位为止,报告此人的编号 X。输入 n, m,求出 X题解分析:一开始有 n 个人,报到 m 的人出局后,如果我们从刚才出局的那人的下一位开始重新从 1 开始编号,原问题就转化为了一个...
分类:
其他好文 时间:
2014-06-28 10:01:14
阅读次数:
152
【Joseph问题描述】n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 【求解思路】我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始): k k+1 k+2 ... n...
分类:
其他好文 时间:
2014-06-27 15:12:22
阅读次数:
228
15个教徒与15个非教徒在深海遇险,必须将一半的人投入大海,其余的人才能幸免于难,于是想到一个方法,30个人围成一圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环直到余15个人为止,问怎么样排法,才能使每次投入大海的都是非教徒?using System;using System.C...
分类:
其他好文 时间:
2014-06-25 12:22:56
阅读次数:
294
Problem DescriptionTeacher HU and his 40 students were trapped by the brigands. To show their power, the head of the brigands want to select one peopl...
分类:
其他好文 时间:
2014-06-17 00:28:32
阅读次数:
362
将链表头尾倒置将几个链表合并成一个新的链表,将链表中重复的节点去掉,并按大小排序双向循环链表单向循环链表(约瑟夫循环)多项式相加程序源代码单链表、单向循环链表结点类packagejavab;publicclassNode{intdata;Nodenext;publicNode(intdata){th...
分类:
编程语言 时间:
2014-06-14 19:39:06
阅读次数:
267
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。以下是使用循环链表和数组的两种实现:
分类:
其他好文 时间:
2014-06-12 21:18:46
阅读次数:
251