91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何實現猴子選大王問題算法

發布時間:2021-06-25 14:48:20 來源:億速云 閱讀:105 作者:小新 欄目:開發技術

這篇文章主要介紹php如何實現猴子選大王問題算法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體分析如下:

一、問題:

n只猴子圍坐成一個圈,按順時針方向從1到n編號。
然后從1號猴子開始沿順時針方向從1開始報數,報到m的猴子出局,再從剛出局猴子的下一個位置重新開始報數,
如此重復,直至剩下一個猴子,它就是大王。

設計并編寫程序,實現如下功能:
(1)   要求由用戶輸入開始時的猴子數$n、報數的最后一個數$m。
(2)   給出當選猴王的初始編號。

二、解決方法:

/**
 * @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));

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

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如何實現猴子選大王問題算法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

武宁县| 墨竹工卡县| 托克托县| 棋牌| 滁州市| 象山县| 凌源市| 阳曲县| 偏关县| 剑川县| 宜阳县| 杂多县| 沛县| 景洪市| 昌图县| 鄯善县| 四子王旗| 平江县| 辽宁省| 泗水县| 噶尔县| 泾阳县| 延安市| 拉萨市| 红桥区| 轮台县| 景洪市| 永寿县| 新田县| 灵宝市| 横峰县| 福建省| 湾仔区| 凭祥市| 龙门县| 龙岩市| 托克逊县| 灵川县| 绥中县| 两当县| 朝阳市|