<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            php語言

            PHP實現猴子選大王問題的算法

            時間:2025-03-13 00:36:45 php語言 我要投稿
            • 相關推薦

            PHP實現猴子選大王問題的算法

              我們的事業就是學習再學習,努力積累更多的知識,因為有了知識,社會就會有長足的進步,人類的未來幸福就在于此。以下是小編為大家搜索整理的PHP實現猴子選大王問題的算法,希望對大家有所幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

              一、問題:

              n只猴子圍坐成一個圈,按順時針方向從1到n編號。

              然后從1號猴子開始沿順時針方向從1開始報數,報到m的猴子出局,再從剛出局猴子的下一個位置重新開始報數,

              如此重復,直至剩下一個猴子,它就是大王。

              設計并編寫程序,實現如下功能:

              (1) 要求由用戶輸入開始時的猴子數$n、報數的最后一個數$m。

              (2) 給出當選猴王的初始編號。

              二、解決方法:

              ?

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            /**
            * @param int $n 開始時的猴子數量
            * @param int $m 報道的最后一個數
            *(報到這個數的猴子被淘汰,然后下一個猴子重新從①開始報數)
            * @return int 猴子的初始編號
            */
            function monkeySelectKing($n,$m)
            {
            //猴子的初始數量不能小于2
            if ($n<2)
            {
            return false;
            }
             
            $arr=range(1,$n);
            //將猴子分到一個數組里, 數組的值對應猴子的初始編號
            $unsetNum=0;
            //定義一個變量,記錄猴子的報數
             
            for ($i = 2; $i <=$n*$m ; $i++)
            //總的循環次數不知道怎么計算,
            {
            //不過因為循環中設置了return,所以$m*$len效率還可以
            foreach ($arr as $k => $v)
            {
            $unsetNum++; //每到一個猴子, 猴子報數+1
             
            //當猴子的報數等于淘汰的數字時:淘汰猴子(刪除數組元素)
            //報數歸0(下一個猴子從1開始數)
            if ($unsetNum==$m)
            {
            // echo "<pre>";//打開注釋,可以看到具體的淘汰過程
            // print_r($arr);
            unset($arr[$k]);
            //淘汰猴子
            $unsetNum=0;
            //報數歸零
            if (count($arr)==1)
            //判斷數組的長度, 如果只剩一個猴子, 返回它的值
            {
            return reset($arr);
            }
            }
            }
            }
            }
             
            var_dump(monkeySelectKing(6, 3));

              補充改進算法(該算法更加簡潔明了!):

              ?

            1
            2
            3
            4
            5
            6
            7
            8
            9
            function yuesefu($n,$m) {
            $r=0;
            for($i=2; $i<=$n; $i++) {
             
            $r=($r+$m)%$i;
            }
            return $r+1;
            }
            print_r(yuesefu(3,3));

            【PHP實現猴子選大王問題的算法】相關文章:

            PHP實現抽獎概率算法09-13

            PHP紅包算法11-04

            php經典算法介紹10-05

            PHP經典算法題09-05

            PHP幾個經典算法題10-27

            PHP的樹形結構算法07-06

            如何解決PHP無法實現多線程的問題08-20

            實現PHP實現限制IP訪問11-11

            PHP 快速排序算法解析06-11

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院