题:一群猴子排成一圈,按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)相关推荐

  1. 【每日算法】C语言8大经典排序算法(2)

    接上文--->[每日算法]C语言8大经典排序算法(1) 二.插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中 ...

  2. 算法设计与分析——十大经典排序算法二(6--10)

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com  Time of completion:2023.3.1 Las ...

  3. java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...

    点击上方"JAVA",星标公众号 重磅干货,第一时间送达 本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法: 冒泡排序 选择排序 插入排序 希尔排序 归并排 ...

  4. gentry算法_28个不得不看的经典编程算法

    前十个是来自圣经的十大算法: 发起人的描述:<来自圣经的证明>收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧.如果还有一本<来自圣经的算法>,哪些算法会列入其 ...

  5. 填空题C语言,c语言经典选择填空题

    <c语言经典选择填空题>由会员分享,可在线阅读,更多相关<c语言经典选择填空题(21页珍藏版)>请在人人文库网上搜索. 1.选择题(30分)(第一部分分10分,第二部分12分, ...

  6. 算法大总结之----10大经典排序算法(从小到大排列)

    目录 1. 冒泡排序 1.1. 算法讲解 1.2. 代码实现 2. 选择排序 2.1. 算法讲解 2.2. 代码实现 3 插入排序 2.1. 算法讲解 2.2. 代码实现 4 希尔排序 2.1. 算法 ...

  7. c语言排序算法实际案例,[C语言] 部分经典排序算法详解(有图解)

    目录 1.内容概括 2.主要算法 3.技术的具体应用 4.算法实际应用 5.总结 0.前言 在上一篇文章<[C语言] 数组的实际应用三则>中我们提到了数组的一些基础知识,并通过三个实际例子 ...

  8. 排序算法,最全的10大排序算法详解(Sort Algorithm)

    文章目录 排序算法,最全的10大排序算法详解(Sort Algorithm) 排序算法分类 排序算法稳定性 时间复杂度(time complexity) 1#时间复杂度的意义 2#基本操作执行次数 如 ...

  9. [经典排序算法][集锦]

    经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者 ...

  10. 【十大经典数据挖掘算法】PageRank

    作者简介: Treant 人工智能爱好者社区专栏作者 博客专栏:https://www.cnblogs.com/en-heng 引言 PageRank是Sergey Brin与Larry Page于1 ...

最新文章

  1. Shell 前后台任务
  2. 五、【线性表】线性表的链式表示和实现
  3. 国内知名互联网公司的开源项目
  4. compizconfignbsp;nbsp;中的方框…
  5. Scala学习之Option类
  6. 拓端tecdat|R语言回归中的Hosmer-Lemeshow拟合优度检验
  7. 计算机C盘什么引用了,计算机C盘装满了怎么办?
  8. miRNA数据库篇——RNAcentral
  9. 武田2020财年第三季度业绩彰显增长加速和持续的韧性;确认了2020财年全年管理层指引,并上调了自由现金流以及列报每股盈利的预测
  10. Quartz定时任务框架(二):Trigger触发器详解
  11. x240无线网卡驱动 linux,Linux2.6移植:DM9000驱动
  12. 蓝桥ROS机器人之CoppeliaSim_Edu_V4_2_0
  13. 罗技产品序列号追溯条码扫描系统
  14. 代码执行sql出错:SQL syntax error, expected token is ‘RIGHT_PAREN‘, actual token is ‘IDENTIFIER‘
  15. Javascript(js)进阶学习笔记——String对象
  16. MinGW中的头文件路径
  17. 30岁女IT月薪3W的背后:从数据报表到数仓、中台,这工具帮了大忙
  18. HTTP请求中的OPTIONS请求
  19. c语言程序个人实验报告,C语言程序设计实验报告(5)
  20. 信号隔离器在PLC/DCS控制系统的应用

热门文章

  1. Python lambda表达式与函数式编程
  2. ImportError: DLL load failed: 找不到指定的模块
  3. bat面试题 python 单链表反转排序
  4. fftw_plan_dft_2d优化
  5. OpenCV 3最新模块介绍
  6. CentOS下查看最后登录的用户信息以及LOG记录
  7. 蓝牙杂散超标_杂散发射
  8. 计算机攻防网站在线对攻,对攻
  9. Java基础之Hibernate
  10. linux上进程状态查询