1、一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

解法1(模拟方法):

解法2(递推方法):

以最大6只,每次踢出第3只为例,通过每次获得的新序号可以反向推导如下结论:

1 2 3 4 5 6 (3+3)%6=0;

4 5 6 1 2 (0+3)%5=3;

1 2 4 5 (1+3)%4=0;

5 1 2 (1+3)%3=1;

5 1  (0+3)%2=1;

1   1%1=0;  //最后一只的取余值为0 以此向上倒推

公式如下:f(n)=(k+f(n-1))%n;

解法3(递归方法):

算法-约瑟夫环问题(丢手绢问题)相关推荐

  1. 约瑟夫环(丢手绢问题)

    文章目录 问题描述 思路 代码实现 问题描述 有 1~N 个数字,从 1~m 依次报数,数到 m 的数字要被删掉,求最后剩下的数字是? 思路 第一次报数 第二次报数 1 n-m+1 2 n-m+2 - ...

  2. Java数据结构单向循环链表实现约瑟夫问题(丢手绢)

    环形链表 实例:使用环形链表解决约瑟夫问题(丢手绢) 构建一个单向环形链表思路 ​ 1)先创建第一个节点,让first指向该节点,并形成环形 ​ 2)加入环形链表 遍历环形链表 ​ 1)先让一个辅助指 ...

  3. vivo2020校招笔试题[编程题]报数(约瑟夫问题又称丢手绢问题)-java解决

    今年7月份vivo迎来了新入职的大学生,现在需要为每个新同事分配一个工号.人力资源部同事小v设计了一个方法为每个人进行排序并分配最终的工号,具体规则是: 将N(N<10000)个人排成一排,从第 ...

  4. 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)

    我们来玩丢手绢 昨天我们打扑克,今天我们丢手绢 丢手绢我们都知道这个游戏,他的由来由约瑟夫 (Josephus)提出来的 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,3 ...

  5. 毕业生求职必会算法 约瑟夫环问题

    写在前面: 我是 「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感 ...

  6. 严蔚敏算法约瑟夫环_极客算法训练笔记(三),链表详细图解,别再逃避了朋友...

    目录 缓存引爆链表 链表 单链表 双向链表 循环链表 双向循环链表 LinkedHashMap实现LRU缓存,源码解析(JDK1.8) 算法 爬楼梯 算法 反转链表 算法 链表环检测 缓存引爆链表 存 ...

  7. 程序员的算法趣题Q58: 丢手绢游戏中的总移动距离

    1. 问题描述 2. 解题分析 搜索最短距离,图搜索问题中的最短距离问题,可以用广度优先搜索策略来解决. 2.1 搜索树示意图 搜索树示意图如下: 2.2 算法流程 用一维数组表示当前状态,但是要注意 ...

  8. python约瑟夫环问题给十个学生编号报到3者出列_趣味算法--约瑟夫环问题(示例代码)...

    问题描述 已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌上.指定编号为k的人开始从1报数,数到m的那个人出列:出列那个人的下一位又从1开始报数,数到m的那个人出列:以此规则重复下去, ...

  9. 算法-约瑟夫环问题——python实现

    Hello NanFeng 遇到了一个有点意思的题: 一艘船上有30个人,现在因为超载需要15人下船,决策者采用了一种很特殊的抽签方式 1.先让人们排成一列,按照顺序给每个人编号 2.依次从1开始报数 ...

最新文章

  1. Leetcode-探索 | 旋转数组
  2. 图像滤镜艺术---微软自拍APP滤镜实现合集DEMO
  3. jvm中的年轻代 老年代 持久代 gc ----------转载
  4. 什么是 SAP Spartacus FacadeFactoryService 中的 Resolver
  5. html5群组选择器,css选择器
  6. Jinja2模板与模板继承
  7. 【Tensorflow】TF中的字符串tf.string
  8. select、poll和epoll
  9. fastica的matlab工具箱,FastICa matlab工具箱使用说明
  10. 十.jmeter性能测试基础实践(2)
  11. 软件配置管理(SCM)介绍
  12. I2C总线协议详解(特点、通信过程、典型I2C时序)
  13. 【Linux驱动开发】串口
  14. Mac中在Matlab中安装Mosek
  15. 微软提供的无限次延长Vista激活
  16. 怎么用几何画板制作图形平移和旋转
  17. yum和repo详细解析
  18. python智能语音识别_Python 智能语音识别-Speech搭建和使用
  19. NVIDIA GeForce 940MX   win10 python3.6 anaconda cudn9.0 cudnn 7.0 tensorflow-gpu 1.12 安装
  20. 如何实现7*24小时慢直播应用?

热门文章

  1. 《八》微信小程序中的 Page
  2. JS 获取当前日期工具函数
  3. shell模拟银行取款功能流程脚本
  4. day01-网络爬虫
  5. 公务员备考(二) 行测 言语理解(40题35分钟,正确率80%)
  6. 联想笔记本没有声音,F1灯常亮没办法关闭解决办法
  7. Unicode基本汉字、部首扩展、康熙部首对照
  8. 抖音视频置顶?抖音视频置顶功能全解!
  9. 理解HTTP之keep-alive
  10. 打造一支有战斗力的团队