首頁 每日程式設計 PHP知識 PHP隨機取一演算法(三)

PHP隨機取一演算法(三)

Feb 18, 2019 pm 04:06 PM

在前面的文章《PHP隨機取一演算法(二)》中,我們詳細的為大家介紹PHP隨機取一演算法的實現思路,也就是「公平選猴王」面試題的解決方法。

PHP隨機取一演算法(三)

下面我們就結合上述文章中的程式碼方法,給大家透過Xdebug調試運行演算法實現的過程。

問題如下:

一群猴子排成一圈,按1,2,…,n依序編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下一隻猴子為止,那隻猴子就叫做大王。請程式模擬此過程,輸入m、n, 輸出最後那個大王的編號。

程式碼如下:

<?php

function king($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 king(10,3);
登入後複製

首先我們在第四行程式碼前,建立一個斷點。

PHP隨機取一演算法(三)

然後開啟瀏覽器,執行此段程式碼,斷點成功取得焦點,如下。

PHP隨機取一演算法(三)

建立1到n數組。

PHP隨機取一演算法(三)

然後while循環判斷刪除元素。

PHP隨機取一演算法(三)

以此循環,最後得出「猴王」。

相關推薦:《PHPStorm怎麼配置xdebug工具並使用? (圖文 影片教學)

那麼關於PHP隨機取演算法的內容,就介紹到這裡。大家也可以在本地自行測試。其實也非常簡單,希望對需要的朋友有幫助!

以上是PHP隨機取一演算法(三)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24