php 模拟数猴子数大王,猴子大王的问题
题目是这样的,从网上找到的:
群猴子排成一圈,按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,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈...
一 群猴子排成一圈,按1,2,-,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去-,如此不停的 进行下去,直到最后只剩下一只猴子为止,那只猴子就叫 ...
- Java get set6_Java oop 的题与答案6:使用程序模拟英雄金币数,get与set知识,访问修饰符(有图)...
//使用程序模拟英雄金币数,使用构造函数设置默认值为300,设置set方法可以给每个用户增进金币, //get获取每个用户的金币数,定义静态变量统计总金币数,创建5个对象,并赋值, //保存到数组了, ...
- 知识普及|模拟量、数字量与开关量的区别?
我们常说模拟量.数字量.开关量,从字面意思大概也能明白部分意思,但它们到底是什么,有什么特点和区别呢?今天我们就专门来讲一讲,模拟量.数字量以及开关量的概念和区别. 1-模拟量模拟量是指变量在一定范围 ...
- 模拟量、数字量与开关量的区别
我们常说模拟量.数字量.开关量,从字面意思大概也能明白部分意思,但它们到底是什么,有什么特点和区别呢?今天我们就专门来讲一讲,模拟量.数字量以及开关量的概念和区别. 模拟量 模拟量是指变量在一定范围内 ...
- 模拟量、数字量、开关量概述
一.概念区分 模拟量 模拟量是指在某一范围内可以连续变化的量,它可以表示任意值,通常用来描述物理现象(如温度.压力.速度等).模拟量通常由模拟信号表示,模拟信号是一个连续的电压或电流信号,它可以表示物 ...
- MCGS通道地址填写注意点--模拟量转数字量--触摸屏环境升级
一.通道地址 MCGS通道地址采用的是十进制地址,不是16进止地址. MCGS通道地址编号=modbus寄存器地址号+1(十进制) 二.模拟量转数字量 读取到的模拟量值可以通过通道处理里的工程转换功能 ...
- 数钱数到手抽筋html5,数钱数到手抽筋的经典句子
1.他两手抓住竹竿,像敏捷的猴子那样,双脚一蹬,就嘈嘈嘈地爬了上去. 2.父母会在历史博物馆里徜徉度过愉快的时光. 3.只要我的生命没有停止,对他的记忆就不会熄灭. 4.对于像数学物理这样的学科,我只 ...
- 微信文章阅读数点赞数查询API接口及实现(小数据量)
微信文章阅读数点赞数查询API接口及实现 研究过微信文章阅读和点赞数的同学都知道,如何获取这两个数字,关键在于获取微信有效的key.这个key的作用时间大概是2小时,而且也有访问频率的限制.访问频率可 ...
- fiddler抓包获取mysql密码_PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
简介: 分析接口知道要获取文章阅读数和点赞数必须有key和uin这两个关键参数,不同公众号key不一样(据说有万能微信key,不懂怎么搞到),同一个公众号key大概半小时会过期 提交链接获取文章阅读量 ...
最新文章
- ActivityManagerService简要分析
- 成都两年JAVA工程师_成都Java工程师学习路线
- python 数据库查询返回list或tuple
- 货币市场基金的基本分类
- spring boot单元测试(转)
- php curl 相关链接 收藏
- 一个医院内的计算机网络系统属于,医院信息管理系统
- 用python制作勒索病毒_python生成的exe被360识别为勒索病毒原因及解决方法
- 计算机网络实验双绞线制作,实验一 双绞线制作实验报告
- hud 4415 Assassin’s Creed
- 熟悉Hive 实验2
- 蓝桥杯2020年上半场省赛完整版题解(Java 大学B组)
- 考取RHCE认证的历程,总结的经验
- 西华大学计算机科学与技术学院,王秀华 - 西华大学 - 计算机与软件工程学院
- 《支付系统-3交易系统》
- 04、江苏专转本(专业课笔记)第四章、计算机网络与因特网
- layui框架学习(1:布局)
- hihoCoder--139周 买零食
- MySQL调优系列:慢查询记录
- 圣诞老人的礼物-Santa Clau’s Gifts