php 常见的算法题,php最常见最经典的算法题(1)
题:一群猴子排成一圈,按1,2,3,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈。继续从它后面一位再开始数,数到第m只,再把它踢出去…。如此不停的进行下去,直到最后只剩下一只猴子为止。要求编程模拟此过程,任意输入m、n值,输出最后那一只猴子的编号。
function getMonkeyNumber($n, $m){
$monkeys = range(1, $n); //创建1到n的一维数组
$i=0;
while (count($monkeys)>1) { //循环条件为猴子数量大于1
if(($i+1)%$m==0) { //$i为数组下标;$i+1为猴子编号
unset($monkeys[$i]); //余数等于0表示正好第m个,删除,用unset删除保持下标关系
} else {
array_push($monkeys,$monkeys[$i]); //如果余数不等于0,则把数组下标为$i的放到数组末尾,目的是循环形成一个猴子圆圈
unset($monkeys[$i]);
}
$i++;//$i 循环+1,不断把猴子删除,或 push到数组
}
return current($monkeys); //当猴子数量等于1时,输出当前当前数组唯一一个元素的值,即是最后一只猴子的编号
}
echo getMonkeyNumber(13,4);//最后一只猴子的编号 5
标签:下标,编号,猴子,算法,数组,经典,php,monkeys,unset
来源: https://www.cnblogs.com/ningcc/p/13813161.html
php 常见的算法题,php最常见最经典的算法题(1)相关推荐
- 【每日算法】C语言8大经典排序算法(2)
接上文--->[每日算法]C语言8大经典排序算法(1) 二.插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中 ...
- 算法设计与分析——十大经典排序算法二(6--10)
一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2023.3.1 Las ...
- java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...
点击上方"JAVA",星标公众号 重磅干货,第一时间送达 本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法: 冒泡排序 选择排序 插入排序 希尔排序 归并排 ...
- gentry算法_28个不得不看的经典编程算法
前十个是来自圣经的十大算法: 发起人的描述:<来自圣经的证明>收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧.如果还有一本<来自圣经的算法>,哪些算法会列入其 ...
- 填空题C语言,c语言经典选择填空题
<c语言经典选择填空题>由会员分享,可在线阅读,更多相关<c语言经典选择填空题(21页珍藏版)>请在人人文库网上搜索. 1.选择题(30分)(第一部分分10分,第二部分12分, ...
- 算法大总结之----10大经典排序算法(从小到大排列)
目录 1. 冒泡排序 1.1. 算法讲解 1.2. 代码实现 2. 选择排序 2.1. 算法讲解 2.2. 代码实现 3 插入排序 2.1. 算法讲解 2.2. 代码实现 4 希尔排序 2.1. 算法 ...
- c语言排序算法实际案例,[C语言] 部分经典排序算法详解(有图解)
目录 1.内容概括 2.主要算法 3.技术的具体应用 4.算法实际应用 5.总结 0.前言 在上一篇文章<[C语言] 数组的实际应用三则>中我们提到了数组的一些基础知识,并通过三个实际例子 ...
- 排序算法,最全的10大排序算法详解(Sort Algorithm)
文章目录 排序算法,最全的10大排序算法详解(Sort Algorithm) 排序算法分类 排序算法稳定性 时间复杂度(time complexity) 1#时间复杂度的意义 2#基本操作执行次数 如 ...
- [经典排序算法][集锦]
经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者 ...
- 【十大经典数据挖掘算法】PageRank
作者简介: Treant 人工智能爱好者社区专栏作者 博客专栏:https://www.cnblogs.com/en-heng 引言 PageRank是Sergey Brin与Larry Page于1 ...
最新文章
- Shell 前后台任务
- 五、【线性表】线性表的链式表示和实现
- 国内知名互联网公司的开源项目
- compizconfignbsp;nbsp;中的方框…
- Scala学习之Option类
- 拓端tecdat|R语言回归中的Hosmer-Lemeshow拟合优度检验
- 计算机C盘什么引用了,计算机C盘装满了怎么办?
- miRNA数据库篇——RNAcentral
- 武田2020财年第三季度业绩彰显增长加速和持续的韧性;确认了2020财年全年管理层指引,并上调了自由现金流以及列报每股盈利的预测
- Quartz定时任务框架(二):Trigger触发器详解
- x240无线网卡驱动 linux,Linux2.6移植:DM9000驱动
- 蓝桥ROS机器人之CoppeliaSim_Edu_V4_2_0
- 罗技产品序列号追溯条码扫描系统
- 代码执行sql出错:SQL syntax error, expected token is ‘RIGHT_PAREN‘, actual token is ‘IDENTIFIER‘
- Javascript(js)进阶学习笔记——String对象
- MinGW中的头文件路径
- 30岁女IT月薪3W的背后:从数据报表到数仓、中台,这工具帮了大忙
- HTTP请求中的OPTIONS请求
- c语言程序个人实验报告,C语言程序设计实验报告(5)
- 信号隔离器在PLC/DCS控制系统的应用