首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏祥的专栏

    链表之约瑟夫环(Josephus)问题

    原文链接: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

    60410发布于 2020-03-10
  • 来自专栏leehao

    Java-约瑟夫问题(Josephus Problem)

    题目: 据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式 然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

    18500编辑于 2025-02-11
  • 来自专栏landv

    《挑战30天C++入门极限》理解C++面向对象程序设计中的抽象理论

    由于我们把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;

    55420发布于 2019-07-15
  • 来自专栏fixzd

    redis系列:通过队列案例学习list命令

    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命令弹出对应的数据。

    1.7K10发布于 2018-08-16
  • 来自专栏python3

    约瑟夫斯问题

    弗拉维奥·约瑟夫斯(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" 皮一下很开心

    79940发布于 2020-01-16
  • 来自专栏后端开发笔记

    约瑟夫环的解法

    zs.nextInt(); //打印 System.out.print("输入剔除的序号:"); int n = zs.nextInt(); josephus (m, n); } public static void josephus(int n, int m) { ArrayList<Integer> 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

    57820编辑于 2022-11-18
  • 来自专栏学习

    C语言单向链表的经典算法

    slow->next; fast = fast->next->next; } return slow; } 6.环形链表的约瑟夫问题 1.关于这个算法题的小故事:著名的Josephus 问题 据说著名犹太 Josephus有过以下的故事:在罗⻢⼈占领乔塔帕特后,39 个犹太⼈与 Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被⼈抓到,于是决定了⼀个⾃杀 ⽅式,41 历史学家 然⽽Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与⾃⼰安排在 第16个与第31个位置,于是逃过了这场死亡游戏。

    39710编辑于 2024-10-09
  • 来自专栏fixzd

    redis系列:通过队列案例学习list命令

    思路 定义一个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命令弹出对应的数据。

    52620发布于 2018-08-28
  • 来自专栏cwl_Java

    C++经典算法题-约瑟夫问题

    26.Algorithm Gossip: 约瑟夫问题(Josephus Problem) 说明 据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus 然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

    1.2K10发布于 2020-02-13
  • 来自专栏代码飞升

    【数据结构与算法】刷题篇——环形链表的约瑟夫问题

    环形链表的约瑟夫问题:经典算法的实现与分析 问题背景 约瑟夫问题(Josephus problem)是一个著名的理论问题,源于公元1世纪犹太历史学家弗拉维奥·约瑟夫斯的记载。 故事描述如下: 在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中。 然而Josephus和他的朋友并不想遵从,Josephus将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 result + 1; } 时间复杂度:O(n) 空间复杂度:O(1) 位运算优化:当m=2时的特殊优化 递归解法:利用递归关系求解 历史案例验证 根据历史记载,当n=41,m=3时: printf("Josephus 位置: %d\n", ysf(41, 3)); // 输出31 验证结果与历史记载一致:Josephus将自己的位置安排在第31号得以幸存。

    44210编辑于 2025-08-28
  • 来自专栏全栈程序员必看

    python实现约瑟夫环问题

    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

    45610编辑于 2022-09-05
  • 来自专栏C语言入门到精通

    数据结构 | 每日一练(26)

    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

    3923229发布于 2019-06-10
  • 来自专栏无量测试之道

    数据结构--链表--约瑟夫问题

    据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈 然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。 Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。下图是约瑟夫问题的图例。

    31310编辑于 2022-07-04
  • 来自专栏技术派

    PHP使用栈解决约瑟夫环问题算法示例

    分享给大家供大家参考,具体如下: 约瑟夫环问题: 39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓。 然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 <?

    53220发布于 2021-07-02
  • 来自专栏爱编码

    经典算法之约瑟夫问题

    背景 据说著名犹太历史学家 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;

    2K10发布于 2019-11-14
  • 来自专栏C/C++指南

    【数据结构与算法 刷题系列】环形链表的约瑟夫问题

    一、问题描述 前言——著名的Josephus问题 据说著名犹太 Josephus有过以下的故事:在罗⻢⼈占领乔塔帕特后,39个犹太⼈与Josephus及他的朋友躲到⼀个洞中,39个犹太⼈决定宁愿死也不要被 历史学家 然⽽Josephus和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与⾃⼰安排在 第16个与第31个位置,于是逃过了这场死亡游戏。

    34610编辑于 2024-12-06
  • 来自专栏海天一树

    约瑟夫环的循环链表解法和数学公式解法

    约瑟夫环(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 << "最后出列的人的编号为(从0开始编号):" << josephus(n, m)

    2.6K40发布于 2018-07-25
  • 来自专栏给永远比拿愉快

    约瑟夫环问题

    下面给出用数组解决的源码: 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

    81420发布于 2019-01-25
  • 来自专栏海天一树

    约瑟夫环的三种解法

    约瑟夫环(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 << "最后出列的人的编号为(从0开始编号):" << josephus(n, m)

    9.1K44发布于 2018-07-25
  • 来自专栏后端开发笔记

    用Java写约瑟夫数

    zs.nextInt();// //打印 System.out.print("输入剔除的序号:"); int n = zs.nextInt(); josephus (m, n); } //判断是否为约瑟夫数,方法,传入两个参数,一个总人数,一个报数 public static void josephus(int m, int n) {

    1.3K50编辑于 2022-11-18
领券