原文链接:https://blog.csdn.net/humanking7/article/details/80786920 ---- 算法问题 代码 测试结果 分析 ---- 算法问题 约瑟夫环(Josephus...int m); int alg3(int n, int m); int main() { //Initialization int n, m; char str[] = "Josephus
题目: 据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式...然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
由于我们把josephus问题分解成了josephus类和ring类,在主函数中,用户只需要使用josephus类设计其对象明确知道Josephus类的外部接口函数也就是操作该对象的方法initial(...{ Josephus a; a.initial(); cin.get(); cin.get(); } josephus.h class Josephus...{ public: Josephus(int num=10,int interval=1) { Josephus::num=num;...; return; } Josephus::num=num; Josephus::interval=interval; Ring...{ public: Josephus(int num=10,int interval=1) { Josephus::num=num;
raw=true] 思路 定义一个list key为josephus,利用 RPOPLPUSH josephus josephus 命令来构造循环链表,每当数到3时,使用rpop rpop josephus...", String.valueOf(i)); } int index = 1; while (listOperations.size("josephus...index = 0; } else { listOperations.rightPopAndLeftPush("josephus", "josephus..."); } index++; } } } 整个代码步骤如下 先是模拟有41个人(向redis中key为josephus的list添加...41个数据) 定义索引index 循环判断key为josephus的数据长度是否大于0 当索引index为3时,调用Redis的rpop命令弹出对应的数据。
弗拉维奥·约瑟夫斯(Josephus problem)是一世纪著名历史学家,他和他39个战友被罗马军队包围在洞中。...python实现方法: from pythonds3.basic.queue import Queue def who_is_josephus(namelist, num): man_queue...man_queue.dequeue()) print(man_queue.dequeue(), 'is dead') print(man_queue.dequeue(), 'is "Josephus..."') who_is_josephus(["Bill", "David", "Susan", "Jane", "Kent", "Brad"], 7) # Susan is "Josephus" 皮一下很开心
zs.nextInt(); //打印 System.out.print("输入剔除的序号:"); int n = zs.nextInt(); josephus...(m, n); } public static void josephus(int n, int m) { ArrayList arrayList =...zs.nextInt();// //打印 System.out.print("输入剔除的序号:"); int n = zs.nextInt(); josephus...(m, n); } //判断是否为约瑟夫数 public static void josephus(int m, int n) { //创建list集合存放人数的序号...i] + " "); } //打印 System.out.println(); } //判断约瑟夫数 public void josephus
思路 定义一个list key为josephus,利用 RPOPLPUSH josephus josephus 命令来构造循环链表,每当数到3时,使用rpop rpop josephus 命令弹出 代码实现...", String.valueOf(i)); } int index = 1; while (listOperations.size("josephus...index = 0; } else { listOperations.rightPopAndLeftPush("josephus", "josephus..."); } index++; } } } 整个代码步骤如下 先是模拟有41个人(向redis中key为josephus的list添加...41个数据) 定义索引index 循环判断key为josephus的数据长度是否大于0 当索引index为3时,调用Redis的rpop命令弹出对应的数据。
slow->next; fast = fast->next->next; } return slow; } 6.环形链表的约瑟夫问题 1.关于这个算法题的小故事:著名的Josephus...问题 据说著名犹太 Josephus有过以下的故事:在罗⻢⼈占领乔塔帕特后,39 个犹太⼈与 Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被⼈抓到,于是决定了⼀个⾃杀 ⽅式,41...历史学家 然⽽Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与⾃⼰安排在 第16个与第31个位置,于是逃过了这场死亡游戏。
26.Algorithm Gossip: 约瑟夫问题(Josephus Problem) 说明 据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus...然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
1.在本题的程序中,函数过程 Create_link_list(n)建立一个具有 n 个结点的环形链表;程序过程josephus(n,i,m)对由Create_link_list(n)所建立的具有n个结点的环形链表按一定的次序逐个输出并删除链表中的所有结点...例如,对于下图中具有 6 个结点的环形链表,在调用 josephus(6,3,2)后,将输出 5,1,3,6,4,2 请在横线处填上适当内容, ? 每空只填一个语句。...END; p^.data:=n; (C)___; END; Creat_link_list:=head END; PROCEDURE josephus
initList(n): list = [] for i in range(n): list.append(i+1) return list def run_josephus...+1 print(list[0]) m = 3 for n in range(11): list = initList(n+1) print(list) run_josephus...(list, m) ''' n = 3 list = initList(n) print(list) run_josephus(list, m) ''' 结果: [1] 1 [1, 2] 1 2 [1
据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈...然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。...Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。下图是约瑟夫问题的图例。
分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。...然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 <?
一、问题描述 前言——著名的Josephus问题 据说著名犹太 Josephus有过以下的故事:在罗⻢⼈占领乔塔帕特后,39个犹太⼈与Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被...历史学家 然⽽Josephus和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与⾃⼰安排在 第16个与第31个位置,于是逃过了这场死亡游戏。
约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Josephus)提出的,他参加并记录了公元66—70年犹太人反抗罗马的起义。...约瑟夫环 * @参数 total:总人数 * @参数 from:第一个报数的人 * @参数 count:出列者喊到的数 * @作者 zheng * @更新 2013-12-5 */ void JOSEPHUS...JOSEPHUS(13,1,3); } 运行结果: delete number: 3 delete number: 6 delete number: 9 delete number: 12 delete...(int n, int m) { if(1 == n) { return 0; } return (josephus(n - 1, m) + m) % n...; } int main() { int n, m; cin >> n >> m; cout josephus(n, m)
下面给出用数组解决的源码: namespace JosephusRing { class Josephus { public int[] Jose(int total...return result; } static void Main(string[] args) { Josephus...jose = new Josephus(); int[] joseRing = jose.Jose(17,0,3); foreach(int num in
背景 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式...然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。...Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 数学解法 ?...Java代码实现 public class Josephus { public static void main(String[] args) { //总人数为41 int total = 41;
约瑟夫环(Josephus)问题是由古罗马的史学家约瑟夫(Josephus)提出的,他参加并记录了公元66—70年犹太人反抗罗马的起义。...约瑟夫环 * @参数 total:总人数 * @参数 from:第一个报数的人 * @参数 count:出列者喊到的数 * @作者 zheng * @更新 2013-12-5 */ void JOSEPHUS...->data); } int main() { int total, from, count; scanf("%d%d%d", &total, &from, &count); JOSEPHUS...(int n, int m) { if(1 == n) { return 0; } return (josephus(n - 1, m) + m) % n...; } int main() { int n, m; cin >> n >> m; cout josephus(n, m)
void Delete_List(joseph *p,joseph *q) { q-> next= p-> next; free(p); } 删除节点(本质,释放内存空间) void josephus...->next=L; } void Delete_List(joseph *p,joseph *q) { q-> next= p-> next; free(p); } void josephus...\n"); else { Create_List(L, n); printf ("\n"); josephus
zs.nextInt();// //打印 System.out.print("输入剔除的序号:"); int n = zs.nextInt(); josephus...(m, n); } //判断是否为约瑟夫数,方法,传入两个参数,一个总人数,一个报数 public static void josephus(int m, int n) {
领取专属 10元无门槛券
手把手带您无忧上云