一、实验内容
约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。
二、实验目的
掌握...
分类:
编程语言 时间:
2015-06-15 11:24:15
阅读次数:
136
问题描述:
n个人编号为1~n,围成一个圈,从第一个人开始报数,123123。。。,报到3的人被踢出,如此循环,直到最后剩下一个人,请问这个人的编号是多少??
方法一:数组解法
import java.util.Scanner;
public class Joseph {
int[] arr;
Joseph(int e) {
arr = new...
分类:
其他好文 时间:
2015-06-11 19:34:58
阅读次数:
104
约瑟夫环是一个数学的应用问题,将其应用到图像加密中。...
分类:
其他好文 时间:
2015-05-14 12:06:21
阅读次数:
168
在题目中有三种情况:
1、1;
2、k == n ;
3、k>n;
对于第一种情况我们可以分为1到k和k到n两个子问题来解。
1.1、1到k:
for( i = 1 , sum = 0 ; i
1.2、k到n: sum =(n-k)*k;
而对于第二种情况就是第一种情况的(1)。但是就这样写的话时明显的tle的。
对于第二种情况也可以分为几个小问题来求解:
2.1、...
分类:
其他好文 时间:
2015-05-11 08:59:18
阅读次数:
120
http://poj.org/problem?id=1012答案以954ms飘过,不过这道题可以轻松用打表过思路:如果我们把每个人位于数组中的原始编号记为绝对编号,每次循环过后相对于绝对编号为0的人的编号为相对编号,那么在这道题里,绝对编号是不重要的,只需要每次相对编号n都落在n>=k的位置上,那么...
分类:
其他好文 时间:
2015-05-05 21:12:42
阅读次数:
129
#include
#include
#define OK 1;
#define ERROR 0;
typedef int Status;
typedef int Elemtype;
typedef struct Cnode{
Elemtype data;
struct Cnode *next;
}CNode;
CNode *joseph;
Sta...
分类:
编程语言 时间:
2015-05-03 17:33:37
阅读次数:
121
题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数字(第一个
为当前数字本身,第二个为当前数字的下一个数字) 。 当一个数字删除后,从被删除数字的下一个继续删除
第 m 个数字。求出在这个圆圈中剩下的最后一个数字
思路:这就是约瑟夫环问题,使用STL中的list来解决,是最基础的解决办法
int Joseph(list& ring,int...
分类:
其他好文 时间:
2015-04-29 09:59:37
阅读次数:
135
题意:有k个好人和k个坏人进行约瑟夫环问题,好人在前面,坏人在后面(即好人编号为0...k - 1),求一个最小的m,使他们用m报数时所有坏人在有好人出局之前出局解法:一开始没怎么细想就写了个模拟……果断T了……于是想把结果打表……结果发现k = 13时根本跑不完……于是还是枚举m,推导每次出局的人...
分类:
其他好文 时间:
2015-04-25 12:12:01
阅读次数:
125
by Julian Joseph - India, 17 Apr 2015IntroductionThis Article shows how we can display PDF on Web without having to install any third party pdf tool o...
什么是约瑟夫问题?
约瑟夫问题是一个有趣的数学游戏,游戏规则如下:
1、N个人围成一个圈,编号从1开始,依次到N。
2、编号为M的游戏参与者开始报数,报数从1开始,后面的人报数接龙,直到K为止,报数为K的人将出局。
3、出局者的下一个玩家接着从1开始报数,如此循环,直到剩下一个玩家时游戏结束,这个玩家就是游戏获胜者。
那么问题来了,哪个编号是游戏获胜者呢?
下面通过简单的几行pytho...
分类:
编程语言 时间:
2015-04-14 18:03:47
阅读次数:
166