题目是这样的,从网上找到的:

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

分析:

用队列来模拟这个问题是比较合适的,编好号的猴子先排成一队,从队头开始往外pop数据,并且同时开始计数,如果计数到了m,把这个猴子直接踢出去,否则就放到队尾,一直不停的出队入队,直到最后一只猴子。

这个问题用c来做一个队列或者直接用数组也是可以解决的。

对php来讲,array本身就是一个双向链表。可以直接用array来解决这个问题,但是php提供的出入队列的api感觉用在这里不太顺手,最后尝试了半天,找到一个还算合理的解决办法

function monkey_select($n, $m) {

//value算是猴子的id,标识是哪只猴子

$queue = range(1, $n);

//相当于一个计数功能

$baoshu = 0;

while(count($queue) > 1) {

$baoshu++;

//弹出第一个元素

$current = array_shift($queue);

if(($baoshu % $m) != 0) {

//报数没有命中m,则排到队尾

$queue[] = $current;

}

}

//输出最后一个元素

$current = array_shift($queue);

echo $current; //echo 5

}

monkey_select(6,4);

php 模拟数猴子数大王,猴子大王的问题相关推荐

  1. 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈...

    一 群猴子排成一圈,按1,2,-,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,如此不停的 进行下去,直到最后只剩下一只猴子为止,那只猴子就叫 ...

  2. Java get set6_Java oop 的题与答案6:使用程序模拟英雄金币数,get与set知识,访问修饰符(有图)...

    //使用程序模拟英雄金币数,使用构造函数设置默认值为300,设置set方法可以给每个用户增进金币, //get获取每个用户的金币数,定义静态变量统计总金币数,创建5个对象,并赋值, //保存到数组了, ...

  3. 知识普及|模拟量、数字量与开关量的区别?

    我们常说模拟量.数字量.开关量,从字面意思大概也能明白部分意思,但它们到底是什么,有什么特点和区别呢?今天我们就专门来讲一讲,模拟量.数字量以及开关量的概念和区别. 1-模拟量模拟量是指变量在一定范围 ...

  4. 模拟量、数字量与开关量的区别

    我们常说模拟量.数字量.开关量,从字面意思大概也能明白部分意思,但它们到底是什么,有什么特点和区别呢?今天我们就专门来讲一讲,模拟量.数字量以及开关量的概念和区别. 模拟量 模拟量是指变量在一定范围内 ...

  5. 模拟量、数字量、开关量概述

    一.概念区分 模拟量 模拟量是指在某一范围内可以连续变化的量,它可以表示任意值,通常用来描述物理现象(如温度.压力.速度等).模拟量通常由模拟信号表示,模拟信号是一个连续的电压或电流信号,它可以表示物 ...

  6. MCGS通道地址填写注意点--模拟量转数字量--触摸屏环境升级

    一.通道地址 MCGS通道地址采用的是十进制地址,不是16进止地址. MCGS通道地址编号=modbus寄存器地址号+1(十进制) 二.模拟量转数字量 读取到的模拟量值可以通过通道处理里的工程转换功能 ...

  7. 数钱数到手抽筋html5,数钱数到手抽筋的经典句子

    1.他两手抓住竹竿,像敏捷的猴子那样,双脚一蹬,就嘈嘈嘈地爬了上去. 2.父母会在历史博物馆里徜徉度过愉快的时光. 3.只要我的生命没有停止,对他的记忆就不会熄灭. 4.对于像数学物理这样的学科,我只 ...

  8. 微信文章阅读数点赞数查询API接口及实现(小数据量)

    微信文章阅读数点赞数查询API接口及实现 研究过微信文章阅读和点赞数的同学都知道,如何获取这两个数字,关键在于获取微信有效的key.这个key的作用时间大概是2小时,而且也有访问频率的限制.访问频率可 ...

  9. fiddler抓包获取mysql密码_PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

    简介: 分析接口知道要获取文章阅读数和点赞数必须有key和uin这两个关键参数,不同公众号key不一样(据说有万能微信key,不懂怎么搞到),同一个公众号key大概半小时会过期 提交链接获取文章阅读量 ...

最新文章

  1. ActivityManagerService简要分析
  2. 成都两年JAVA工程师_成都Java工程师学习路线
  3. python 数据库查询返回list或tuple
  4. 货币市场基金的基本分类
  5. spring boot单元测试(转)
  6. php curl 相关链接 收藏
  7. 一个医院内的计算机网络系统属于,医院信息管理系统
  8. 用python制作勒索病毒_python生成的exe被360识别为勒索病毒原因及解决方法
  9. 计算机网络实验双绞线制作,实验一 双绞线制作实验报告
  10. hud 4415 Assassin’s Creed
  11. 熟悉Hive 实验2
  12. 蓝桥杯2020年上半场省赛完整版题解(Java 大学B组)
  13. 考取RHCE认证的历程,总结的经验
  14. 西华大学计算机科学与技术学院,王秀华 - 西华大学 - 计算机与软件工程学院
  15. 《支付系统-3交易系统》
  16. 04、江苏专转本(专业课笔记)第四章、计算机网络与因特网
  17. layui框架学习(1:布局)
  18. hihoCoder--139周 买零食
  19. MySQL调优系列:慢查询记录
  20. 圣诞老人的礼物-Santa Clau’s Gifts

热门文章

  1. UML正日薄西山的13个理由
  2. 贸然用string比较的后果
  3. pip安装pymssql出现ERROR: Cannot unpack file……报错解决
  4. 人民币贬值波及海外代购:海淘族成本上涨
  5. MySQL中like查询是否会使用索引
  6. CSU 1506 酷酷的单词
  7. Android手机扫描,电脑复制内容----手机实现无线扫码枪功能
  8. GhSAD1基因调节棉花的冷应激反应
  9. linux文件系统研究与设计,Linux下实时文件系统的设计
  10. 操作系统——时间片轮转调度算法(RR)