PHP算法题02-猴子当大王

作者: 温新

分类: 【PHP算法题】

阅读: 2119

时间: 2020-09-13 14:28:53

题目

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

解析

1、首先将猴子从1到n编号存放到数组中

2、对猴子的总个数进行循环

3、循环时将数到编号的猴子从数组中删除

4、将被被踢的猴子从原来位置移动到数组尾部,移动后删除原猴子的位置编号

5、循环时,判断猴子数组个数大于1则继续循环

6、剩下最后一个编号的猴子则是大王

实现

方式一

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important"><?</span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">php</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">/**</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">* 猴子当大王</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">* </span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">* @param  int $n 猴子总数</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">* @param  int $m 数到第几只的那只猴子被踢出去</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">* @return int </span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">*/</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">function</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">monkey_king</span>(<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">int</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$n</span> , <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">int</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$m</span>):<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">int</span> {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 构造猴子总数的数组</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">range</span>(<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span> , <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$n</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$i</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">0</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 循环判断猴子大王是否计算出来</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">while</span> (<span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">count</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span>) <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">></span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span>) {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 判断是否为要踢出去的猴子</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">if</span> ((<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$i</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">+</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span>) <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">%</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$m</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">==</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">0</span>) {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">   <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 删除被踢出去的猴子</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">   <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">unset</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span>[<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$i</span>]);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  } <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">else</span> {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">   <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">// 将没有被踢出的猴子压入猴子数组尾部</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">   <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">array_push</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span>, <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span>[<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$i</span>]);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">   <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">unset</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span>[<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$i</span>]);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$i</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">++</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">return</span> <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">current</span>(<span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkeys</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkey</span> <span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">monkey_king</span>(<span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">5</span> , <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">3</span>);</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">echo</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'猴王是:'</span> . <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$monkey</span> . <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'<br>'</span>;</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span>

我是小白,期待和优秀的你一起同行!

小白

2020年09月13日

请登录后再评论