约瑟夫环是一个很有意思的算法。大意就是:罗马人占领了乔塔帕特,41个人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家约瑟夫(Josephus)和他的一个朋友。剩余的31个人为了表示不想罗马人屈服,决定集体自杀。大家决定了一个自杀方案,所有这41个人围成一个圈,由第1个人开始顺时针报数,每报数为3的人立刻就自杀,然后再由下一个人重新开始报数,仍然是每报数为3的人就立刻自杀,直到所有人都自杀
分类:
编程语言 时间:
2018-01-27 19:10:25
阅读次数:
145
首先把上面的双向链表改为循环双向链表 编码实现约瑟夫环 ...
分类:
其他好文 时间:
2017-07-12 15:10:33
阅读次数:
143
什么是约瑟夫环问题? 而这实际上就是一个经典的数学问题: 而用一个更生活化的例子来阐述:几个人围坐在一张圆桌上,然后开始数数,数到指定数则淘汰,然后再重1开始数,直到还剩最后一个人则为胜利者。 而具体代码如何来实现呢? 首先还是基于上次的那个链表进行扩展: ...
分类:
其他好文 时间:
2017-07-01 17:20:22
阅读次数:
215
约瑟夫问题是个有名的问题:N个人围成一圈。从第一个開始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。比如N=6,M=5。被杀掉的人的序号为5,4,6。2。3。最后剩下1号。 假定在圈子里前K个为好人,后K个为坏人。你的任务是确定这种最少M,使得全部的坏人在第一个好人之前被杀掉。 // 数学中 ...
分类:
编程语言 时间:
2017-05-13 20:01:44
阅读次数:
236
约瑟夫环问题的具体描述是:设有编号为1,2,……,n的n个(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,才从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,知道剩余1个人为止。当任意给定n和m后,设计算法求n个人出圈的次序。 一开始看到这这个题目 ...
分类:
编程语言 时间:
2017-02-12 20:16:24
阅读次数:
248
1.问题 2.代码实现 最后输出的结果如下: ...
分类:
编程语言 时间:
2016-10-22 07:35:54
阅读次数:
169
* 网上有一些实现约瑟夫环代码是有问题的,在给intPers数组赋值时,循环中的条件应该用 i<= total ,否则数组最后一位是0,导致计算结果有误。 ...
前天用单循环链表实现了约瑟夫环问题,这种方法执行效率高。接下来用另外两种简单的方法实现之。 方法一:使用数组 方法二:使用结构体数组 ...
分类:
编程语言 时间:
2016-06-21 06:33:43
阅读次数:
233
刚开始学C,碰到经典的围圈报数问题,现先将实现代码附下: #include<stdio.h>#include<stdlib.h> struct LNODE{ //链表定义 int data; struct LNODE *next;};typedef struct LNODE Lnode;typede ...
分类:
其他好文 时间:
2016-06-19 01:09:25
阅读次数:
175
尝试表达 本人试着去表达约瑟夫环问题:一群人围成一个圈,作这样的一个游戏,选定一个人作起点以及数数的方向,这个人先数1,到下一个人数2,直到数到游戏规则约定那个数的人,比如是3,数到3的那个人就离开这个游戏;按这样的规则,剩下一个人,游戏就结束,这个人就为赢家。(读者可以试着表达,不认同,直接忽略) ...
分类:
编程语言 时间:
2016-05-03 23:30:06
阅读次数:
214