剑指offer第四十五题:圆圈中最后剩下的数字:0,1,..,n-1这n个数排成一个圆圈,从数字0开始每次从圆圈中删除第m个数字。求出圆圈中剩下的最后一个数字(约瑟夫环★) ...
分类:
其他好文 时间:
2016-06-24 20:30:50
阅读次数:
172
约瑟夫环问题就是从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开
始报数,数到m的那个人又出列;计算出最后留下来的那个人的编号。
下边给出两种方法,顺序表实现和链表实现。
链表的代码:
typedef struct LinkNode
{
DataType data;
struct LinkNode *next;
}LinkNode,*pLinkNode;
typedef...
分类:
其他好文 时间:
2016-06-24 15:00:21
阅读次数:
126
前天用单循环链表实现了约瑟夫环问题,这种方法执行效率高。接下来用另外两种简单的方法实现之。 方法一:使用数组 方法二:使用结构体数组 ...
分类:
编程语言 时间:
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
约瑟夫环是一个数学的应用问题:已知有n个人,编号为1到n,围坐在一张圆桌周围,从第k个人开始报数(从1开始报),将数到m的人剔除出去,接下来的下一个人重新从1开始报数,如此反复进行,问最后一个被剔除的人是谁???
假设现在有n个人,从第1个人开始报数,数到m的人被剔除。
int check_last_del(int n,int m )
{
int i = 1;
in...
分类:
其他好文 时间:
2016-06-11 20:13:49
阅读次数:
289
题目描述: 给n个人围城一个环,从m号开始杀,每次隔k-1个人(从上一次被杀的人下一个开始数k下,第k个人被杀),问最后剩下的人是几号。 bc的75场有一个边形,uvalive3882 也是个变形; 思路: 我们可以递推解决,设 f[n] 表示的是第 n 个被杀的人是谁。 首先我们将人从0开始编号, ...
分类:
其他好文 时间:
2016-05-28 20:29:48
阅读次数:
183
约瑟夫环问题 已知 n 个人(n>=1)围坐一圆桌周围,从 1 开始顺序编号,从序号为 1 的人开始报数,顺时针数到 m 的那个人出列。下一个人又从 1 开始报数,数到m 的那个人又出列。依此规则重复下去,直到所有人全部出列。请问最后一个出列的人的初始编号。 要求 输入人数 n,所报数 m,输出最后 ...
分类:
编程语言 时间:
2016-05-26 20:30:22
阅读次数:
777
一、典故:据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是商量了一个自杀方式:41个人排成一个圆圈,由第1个人开始报数,每数到第3人该人就必须自杀,然后再由..
分类:
其他好文 时间:
2016-05-20 06:22:24
阅读次数:
140
//约瑟夫环问题
PSListNodeJosephCircle(PSListNodepHead,intM);
//单链表逆置:两种方法都实现:一、三个指针二、尾插发
voidReverseList(PSListNode*pHead);
//单链表排序:冒泡(优化版本)
voidSortList(PSListNodepHead);
//查找链表的倒数第K个结点
PSListNodeFindLastK..
分类:
其他好文 时间:
2016-05-08 01:18:06
阅读次数:
179
约瑟夫问题——利用循环链表求解1. 约瑟夫问题的提法
约瑟夫问题(约瑟夫环)是一个数学的应用问题。
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从1开始报数,数到m的那个人又出列,依此规律重复下去,直到圆桌周围的人全部出列。
通常解决这类问题时我们把编号从1~n,最后结果编号即为原问题的解。
2. 求解约瑟夫问题的算法原理示...
分类:
其他好文 时间:
2016-05-07 06:51:27
阅读次数:
169