【问题描述】设编号为 1 , 2 , ……, n 的 n ( n >0 ) 个人围成一个圈,每人持有一个密码 m ,从 数,报到 m 时停止报数,报 m 的出圈,……,如此下去,直到所有人全部出圈为止。当 任意给定 n 和 m 后,设计算法求 n 个人出圈的次序。【数据结构分析】由于约瑟夫环本身问题...
分类:
其他好文 时间:
2014-10-13 09:25:49
阅读次数:
152
#include<stdio.h> #include<stdlib.h> /** 约瑟夫环 编号为1,2,3……,n的n个人按顺时针方向围坐一圈,每个人手中持有一个密码。 开始任选一个报数上限正整数m,从第一个人开始按顺时针方向自1开始报数, 报道...
分类:
其他好文 时间:
2014-10-11 16:33:15
阅读次数:
143
题目链接:啊哈哈,选我选我思路是:相当于模拟约瑟夫环,仅仅只是是从顺逆时针同一时候进行的,然后就是顺逆时针走能够编写一个函数,仅仅只是是走的方向的标志变量相反。。还有就是为了(pos+flag+n-1)%n+1的妙用。。。题目:The Dole QueueIn a serious attempt t...
分类:
其他好文 时间:
2014-10-09 22:35:57
阅读次数:
226
关于约瑟夫环问题,我们可以从两种思路去实现,一种是用数组,另一种是采用链表。用数组方法实现代码: 1 #include 2 #include 3 #include 4 #define M 8 5 int find(int *arr, int len); 6 int main(int argc,...
分类:
其他好文 时间:
2014-10-09 13:09:33
阅读次数:
211
利用数学推导,如果能得出一个通式,就可以利用递归、循环等手段解决。下面给出推导的过程: (1)第一个被删除的数为 (m - 1) % n。 (2)假设第二轮的开始数字为k,那么这n - 1个数构成的约瑟夫环为k, k + 1, k + 2, k +3, .....,k - 3, k - 2。...
分类:
其他好文 时间:
2014-10-07 00:31:02
阅读次数:
202
http://blog.csdn.net/dengyaolongacmblog/article/details/39208675 1 #!/usr/bin/env python 2 # coding: utf-8 3 4 import os 5 import sys 6 import stri...
分类:
编程语言 时间:
2014-10-01 18:34:31
阅读次数:
159
Language:
Default
小孩报数问题
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 10071
Accepted: 4702
Description
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出...
分类:
其他好文 时间:
2014-09-23 11:45:34
阅读次数:
193
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌剩下最后一个人,求这个人的编号。这是一个经典的算法题,拿到手上,先想到的是模拟报数过...
分类:
其他好文 时间:
2014-09-22 19:10:03
阅读次数:
224
约瑟夫问题的N种解法
1 问题的历史以及不同的版本
1.1
约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Josephus)提出的,他参加并记录了公元66—70年犹太人反抗罗马的起义。约瑟夫作为一个将军,设法守住了裘达伯特城达47天之久,在城市沦陷之后,他和40名死硬的将士在附近的一个洞穴中避难。在那里,这些叛乱者表决说“要投降毋宁死”。于是,约瑟夫建议每个...
分类:
其他好文 时间:
2014-09-19 15:40:55
阅读次数:
357
UVA305 - Joseph(数论 + 打表)
题目链接
题目大意:约瑟夫环问题:n个人围成一圈,每次都淘汰第m个人,问最后一个幸存下来的人的编号。
这题的意思有点不一样,它规定前面的k个人是好人,后面的k个人是坏人(2
?
k形成环)。问最小的m是多少,能够先把后面的k个坏人淘汰再淘汰好人。
解题思路:这题有个递推式:ai = (ai - 1 + m - 1) % ...
分类:
其他好文 时间:
2014-09-19 12:04:05
阅读次数:
220