PHP隨機取一算法(二)

閱讀 20375  ·  發(fā)布日期 2020-08-24 11:44  ·  溫州優(yōu)光網(wǎng)絡科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】 在前面的文章《PHP隨機取一算法(一)》中,我們?yōu)榇蠹液唵谓榻B了PHP取一算法的面試問題。下面我們繼續(xù)結合之前的內(nèi)容,給大家詳細講解PHP取一算法。問題如下:一群猴子排成一圈,按1,2,…,n依次編號。然后從第1只開始數(shù),數(shù)到第m只,把它踢出圈,從它后面再開始數(shù),再數(shù)到第m只,在把它踢出去…,如此不停的進行下去,直到最... 【溫州小程序開發(fā),溫州微信公眾號,平陽做網(wǎng)站,平陽網(wǎng)站建設公司,平陽小程序商城制作,昆陽萬全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號,山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡網(wǎng)店服務,政采云網(wǎng)店管理服務】...

PHP隨機取一算法(二)

在前面的文章《PHP隨機取一算法(一)》中,我們?yōu)榇蠹液唵谓榻B了PHP取一算法的面試問題。
下面我們繼續(xù)結合之前的內(nèi)容,給大家詳細講解PHP取一算法。
問題如下:
一群猴子排成一圈,按1,2,…,n依次編號。
然后從第1只開始數(shù),數(shù)到第m只,把它踢出圈,從它后面再開始數(shù),再數(shù)到第m只,在把它踢出去…,如此不停的進行下去,直到最后只剩下一只猴子為止,那只猴子就叫做大王。
要求編程模擬此過程,輸入m、n, 輸出最后那個大王的編號。
解決代碼示例如下:
$monkeys = range(1, $n);
//創(chuàng)建1到n數(shù)組 $i=0;
while (count($monkeys)>1) {
//循環(huán)條件為猴子數(shù)量大于1 if(($i+1)%$m==0) {
//$i為數(shù)組下標;
$i+1為猴子標號 unset($monkeys[$i]);
//余數(shù)等于0表示正好第m個,刪除,用unset刪除保持下標關系 }
else {
array_push($monkeys,$monkeys[$i]);
//如果余數(shù)不等于0,則把數(shù)組下標為$i的放最后,形成一個圓形結構 unset($monkeys[$i]);
}
$i++;
//$i 循環(huán)+1,不斷把猴子刪除,或 push到數(shù)組 }
return current($monkeys);
//猴子數(shù)量等于1時輸出猴子標號,得出猴王 }
echo king(10,3);
這里我們創(chuàng)建了一個方法King,參數(shù)$n表示n個猴子,$m表示數(shù)到第m個猴子。
那么在king方法體中,我們首先通過range函數(shù)創(chuàng)建一個1到n數(shù)組并用$monkeys來接收。
然后就是使用while 循環(huán)來判斷符合要求的元素。
while循環(huán)的條件是當猴子數(shù)量$monkeys大于1時,則執(zhí)行循環(huán)體。
在循環(huán)體中,再用if...else 判斷,如果($i+1)%$m==0,也就是當余數(shù)等于0,即正好數(shù)到第m個猴子,則用unset刪除此元素并保持下標關系。
如果余數(shù)不等于0,則通過array_push函數(shù)把數(shù)組下標為$i的放最后,形成一個圓形結構。
array_push函數(shù)用于將一個或多個單元壓入數(shù)組的末尾(入棧)。
最后使$i 循環(huán)+1,不斷把猴子刪除,或 push到數(shù)組,當猴子數(shù)量等于1時輸出猴子標號,得出猴王。
那么上述方法中,我們給出的參數(shù)是10和3,輸出結果是:
4表示得出的猴王是標號為4的猴子。
本篇文章關于PHP取一算法的介紹就到這里,在
下一篇文章《PHP隨機取一算法(三)》中,我們會為大家介紹用Xdebug運行調(diào)試此方法的實現(xiàn)過程。
以上就是PHP隨機取一算法(二)的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!
微信
分享相關標簽:
PHP隨機取一算法本文原創(chuàng)發(fā)布php中文網(wǎng),轉載請注明出處,感謝您的尊重!
上一篇:
PHP隨機取一算法(一)
下一篇:
PHP隨機取一算法(三)相關文章相關視頻php隨機顯示指定文件夾下圖片的方法_php技巧php隨機獲取金山詞霸每日一句的方法_php技巧PHP隨機生成唯一HASH值自定義函數(shù)_php技巧PHP隨機生成信用卡卡號的方法_php技巧php隨機生成數(shù)字字母組合的方法_php技巧PHP隨機取一算法(二)《PHP隨機取一算法(一)》2019.2.16《PHP隨機取一算法(二)》2019.2.16《PHP隨機取一算法(三)》2019.2.16 [溫州php做網(wǎng)站知識]