题目:


解答:

这道题,就是典型的约瑟夫环问题,可以采用数学方法解决,当然也可以用数组或者循环链表模拟报数过程。

在这里,简单介绍以下数学思路。

假设有5个猴,那么第一轮报数为:1 2 3 1 2,我们可以简单的分析得到,我们每一轮只用关心3是谁,所以我们可以对每一轮的猴进行标号。

1——2——3——4——5                                   -------     4=(1+3)%5            倒序第

3——4——出局——1——2                              -------     1=(1+3)%3            倒序第

出局——1——出局——2——3                         -------     2=(2+3)%3            倒序第

出局——1/3——出局——2——出局                 -------     2=(1+3)%2+2       倒序第

出局——出局——出局——1——出局               -------     1=1%1                  倒序第

经过这样的几轮,就得到最初的四号猴子是首领。如果,我们再倒序观察四号猴子的每一轮编号,就会发现 上一轮的编号=(当前编号+3)%(上一轮的猴数),因为不会有0的存在,所以如果余数结果是0,则说明他是上一轮的最后一位,即上一轮的编号=上一轮的猴数。

分析就到这里了,代码实现还是很简单的。

#include <stdio.h>//约瑟夫环,动态规划解决,从最终结果逆向推导
int main(){int N;//index是当前编号,i是猴数int index=1;int i;scanf("%d",&N);//循环可以直接从2只猴开始for(i=2;i<=N;i++){index=(index+3)%i;//如果余数结果是0,则说明他是上一轮的最后一位,即上一轮的编号=上一轮的猴数if(index==0){index=i;}}printf("%d",index);return 0;
}

7-28 | 猴子选大王相关推荐

  1. php猴子找大王算法,教程方法;php实现猴子选大王问题算法实例电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;php实现猴子选大王问题算法实例电脑技巧,以下是给大家带来的教程方法;php实现猴子选大王问题算法实例,大家可以了解一下哦! 下面为你介绍php实现猴子选大王问题算法实例. 本 ...

  2. 蓝桥杯 - 猴子选大王 (约瑟夫问题)

    标题:猴子选大王 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始 ...

  3. JAVA猴子选大王问题

    题目要求 猴子选大王.输入猴子的个数n,所有的猴子从1-n编号排成一圈,从1号猴子开始数数,数到3的倍数猴子被淘汰,最后剩下的是大王.输出是大王的猴子的编号(提示:使用数组,每个数组元素相当于一个猴子 ...

  4. 约瑟夫环 猴子选大王

    <? /*** 猴子选大王:一群猴子排成一圈,按1,2,-,n依次编号.* 然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,* 如此不停的进行下去,直 ...

  5. 7-28 猴子选大王 (C语言)

    7-28 猴子选大王 (20 分)一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻 ...

  6. 解决猴子选大王问题(用C,原创)

    今天在群里看到有人提到一个猴子选大王的问题,题目如下: 题目 山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退 ...

  7. 常用算法(C#): 猴子选大王问题

    猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...

  8. 猴子选王c语言链表程序代码,C语言程序设计-猴子选大王[链表应用]

    2032 猴子选大王 Description 有N只猴子,从1~N进行编号.它们按照编号的顺时针方向排成一个圆圈,然后从第一只猴子开始报数.第一只猴子报的第一个数字为1,以后每只猴子报的数字都是它们前 ...

  9. 约瑟夫环问题之猴子选大王

    猴子选大王的描述为:n只猴子围成一圈,顺时针方向从1到n编号.之后从1号开始沿顺时针方向让猴子从1,2,...,m依次报数,凡是报到m的猴子,都让其出圈,取消候选资格.然后不停的按顺时针方向报数,让报 ...

  10. php 猴子选大王,php猴子选大王

    法一: function monkeyKing($n,$m) { $arr=range(1,$n); $i=0; while (count($arr)>1) { for($i=1;$i<= ...

最新文章

  1. 【learning】矩阵树定理
  2. 合格的CTO应该是什么样?雷军王海峰王小川等共谈「技术创新」| CNCC2020
  3. linux 脚本 试题,10个Linux脚本面试题,看看你能答出几个?
  4. LeetCode 392. 判断子序列(双指针二分查找)
  5. 面试题55 - I. 二叉树的深度
  6. 在 Chrome 控制台可以玩的两个骚操作,你知道吗?
  7. 只卖了2000辆,竟扬言吊打特斯拉!贾跃亭昔日偶像,还在忽悠?
  8. 【Python】:用python做下百度2014笔试题
  9. Android 开机自启动
  10. 教程 | 如何使用Docker、TensorFlow目标检测API和OpenCV实现实时目标检测和视频处理
  11. Junit单元测试默认自动回滚
  12. Python给指定QQ好友自动发送信息和图片
  13. android电视播放器字幕,android播放视频显示字幕
  14. 由一次不断GC并耗费过长的时间所想到的工具 - jvmkill与jvmquake
  15. GUTI S-TMSI及在LTE PAGING中的应用
  16. 微信正式支持注册小号,但不是谁都可以
  17. Anaconda安装keras教程
  18. 月光女神Sarah Brightman 莎拉·布莱特曼视频集锦
  19. date在java中是什么类型_java中date 是什么类型
  20. vue项目接入高德地图点击地图获取经纬度及省市区

热门文章

  1. actor 模型原理 (二)
  2. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part3
  3. c语言任何一个大于6的偶数均可表示为两个素数之和,C语言:验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和...
  4. AI自动剪辑生成视频探索实践
  5. MySQL——初识MySQL
  6. 国内可用的 ChatGPT
  7. ACWING297. 赤壁之战(树状数组dp)
  8. 04Java异常-3. 异常处理方式之try..catch
  9. imx6 通过移植XRM117x(SPI转串口)对Linux中的SPI驱动框架进行分析
  10. excel图片技巧:如何为报表配上节日祝福动画