校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > php使用環(huán)形鏈表解決約瑟夫問題完整示例

php使用環(huán)形鏈表解決約瑟夫問題完整示例

熱門標(biāo)簽:桂陽公司如何做地圖標(biāo)注 太原400電話申請流程 電信外呼系統(tǒng)多少錢一個月 萍鄉(xiāng)商鋪地圖標(biāo)注 宿州正規(guī)外呼系統(tǒng)軟件 企業(yè)400電話辦理多少費(fèi)用 神龍斗士電話機(jī)器人 合肥企業(yè)外呼系統(tǒng)線路 代理打電話機(jī)器人

本文實(shí)例講述了php使用環(huán)形鏈表解決約瑟夫問題。分享給大家供大家參考,具體如下:

約瑟夫問題:

Josephu問題為:設(shè)編號為1,2,...n的n個人圍坐一圈,約定編號為k(1=k=n)的人從1開始報(bào)數(shù),數(shù)到m的那個人出列,它的下一位又從1開始報(bào)數(shù),數(shù)到m的那個人又出列,依次類推,直到所有人出列為止,由此產(chǎn)生一個出隊(duì)編號的序列。并求出最后出列的人是哪個?

PHP實(shí)現(xiàn)環(huán)形鏈表以及約瑟夫問題的解決:

/**
 * 鏈表結(jié)構(gòu)
 */
class Child{
  public $no;
  public $next=null;
  public function __construct($no=null){
    $this->no = $no;
  }
}
/**
 * 鏈表操作
 */
class CycleLink{
  private $nodeNum = 0;
  /**
   * 添加節(jié)點(diǎn)
   */
  public function addNode($head,$node)
  {
    $currentNode = $head;
    while ($currentNode->next!=null  $currentNode->next!=$head) {
      $currentNode = $currentNode->next;
    }
    $currentNode->next = $node;
    $currentNode->next->next = $head;
    $this->nodeNum++;
  }
  /**
   * 刪除節(jié)點(diǎn)
   */
  public function delNode($head,$no)
  {
    $currentNode = $head;
    while ($currentNode->next!=$head) {
      if($currentNode->next->no==$no){
        $currentNode->next = $currentNode->next->next;
        $this->nodeNum--;
        break;
      }
      $currentNode = $currentNode->next;
    }
  }
  /**
   * 獲取節(jié)點(diǎn)數(shù)量
   */
  public function getNodeNum(){
    return $this->nodeNum;
  }
  /**
   * 查找節(jié)點(diǎn)
   */
  public function findNode($head,$no){
    $node = null;
    $currentNode = $head;
    while ($currentNode->next!=$head) {
      if($currentNode->next->no==$no){
        $node = $currentNode->next;
        break;
      }
      $currentNode = $currentNode->next;
    }
    return $node;
  }
  public function getNextNode($head,$node){
    if($node->next==$head){
      return $node->next->next;
    }
    return $node->next;
  }
  /**
   * 顯示節(jié)點(diǎn)
   */
  public function showNode($head)
  {
    echo "br/>br/>";
    $currentNode = $head;
    while ($currentNode->next!=$head){
      $currentNode = $currentNode->next;
      echo '第 '.$currentNode->no.' 名小孩br/>';
    }
  }
}
/*
//創(chuàng)建一個head頭,該head 只是一個頭,不放入數(shù)據(jù)
$head     = new Child();
$childList   = new CycleLink();
$child_1   = new Child(1);
$child_2   = new Child(2);
$child_3   = new Child(3);
$child_4   = new Child(4);
$childList->addNode($head,$child_1);
$childList->addNode($head,$child_2);
$childList->addNode($head,$child_3);
$childList->addNode($head,$child_4);
$childList->showNode($head);
echo "pre>";
var_dump($head);
$findNode = $childList->findNode($head,3);
echo "pre>";
var_dump($findNode);
$childList->delNode($head,2);
$childList->showNode($head);
echo $childList->getNodeNum();
exit();
*/
/**
 * 約瑟夫問題
 * 設(shè)編號為1,2,...n的n個人圍坐一圈,約定編號為k(1=k=n)的人從1開始報(bào)數(shù),數(shù)到m的那個人出列,
 * 它的下一位又從1開始報(bào)數(shù),數(shù)到m的那個人又出列,依次類推,直到所有人出列為止,由此產(chǎn)生一個出隊(duì)編號的序列。
 * 并求出最后出列的人是哪個?
 */
class Josephu{
  private $head;
  private $childList;
  private $k;
  private $m;
  private $n;
  public function __construct($n,$k,$m){
    $this->k = $k;
    $this->m = $m;
    $this->n = $n;
    $this->createList($n);  // 創(chuàng)建小孩
    echo "br/>br/>當(dāng)前有 {$n} 個小孩,從第 {$k} 個小孩開始報(bào)數(shù),數(shù)到 {$m} 退出br/>br/>";
  }
  // 數(shù)數(shù)
  public function exec(){
    $currentNode = $this->childList->findNode($this->head,$this->k);  // 獲取第一個開始報(bào)數(shù)的人
    $_num = 0;  // 當(dāng)前數(shù)到的值
    $surplus_num = $this->n;
    // 開始報(bào)數(shù)
    while ($surplus_num>1) {  // 只要人數(shù)大于1,就繼續(xù)報(bào)數(shù)
      // 當(dāng)前報(bào)數(shù)值
      $_num++;
      $nextNode = $this->childList->getNextNode($this->head,$currentNode);
      // 數(shù)至第m個數(shù),然后將其移除。報(bào)數(shù)恢復(fù)到0,重新循環(huán)。
      if( $_num==$this->m ){
        $_num = 0;
        $surplus_num--;
        // 當(dāng)前小孩退出
        $this->childList->delNode($this->head,$currentNode->no);
        echo 'br/>退出小孩編號:' . $currentNode->no;
      }
      // 移動到下一個小孩
      $currentNode = $nextNode;
    }
    echo 'br/>最后一個小孩編號:' . $currentNode->no;
  }
  // 創(chuàng)建小孩
  private function createList($n){
    $this->childList = new CycleLink();
    $this->head = new Child();
    for ($i=1;$i=$n;$i++){
      $node = new Child($i);
      $this->childList->addNode($this->head,$node);
    }
    $this->childList->showNode($this->head);
  }
}
$josephu = new Josephu(4, 1, 2);
$josephu->exec();

運(yùn)行結(jié)果:

第 1 名小孩
第 2 名小孩
第 3 名小孩
第 4 名小孩


當(dāng)前有 4 個小孩,從第 1 個小孩開始報(bào)數(shù),數(shù)到 2 退出

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP+Redis鏈表解決高并發(fā)下商品超賣問題(實(shí)現(xiàn)原理及步驟)
  • python環(huán)形單鏈表的約瑟夫問題詳解
  • C語言基于循環(huán)鏈表解決約瑟夫環(huán)問題的方法示例
  • java基于雙向環(huán)形鏈表解決丟手帕問題的方法示例
  • php基于環(huán)形鏈表解決約瑟夫環(huán)問題示例
  • Java編程刪除鏈表中重復(fù)的節(jié)點(diǎn)問題解決思路及源碼分享
  • C語言解字符串逆序和單向鏈表逆序問題的代碼示例
  • Java采用循環(huán)鏈表結(jié)構(gòu)求解約瑟夫問題
  • Leetcode常見鏈表問題及代碼示例

標(biāo)簽:衡陽 白銀 崇左 鄂州 綏化 辛集 太原 廊坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php使用環(huán)形鏈表解決約瑟夫問題完整示例》,本文關(guān)鍵詞  php,使用,環(huán)形,鏈表,解決,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php使用環(huán)形鏈表解決約瑟夫問題完整示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于php使用環(huán)形鏈表解決約瑟夫問題完整示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    成人深夜在线观看| 在线免费av一区| 欧美成人综合网站| 欧美日韩国产一二三| 欧美一级一区二区| 91精品欧美久久久久久动漫| 石原莉奈在线亚洲二区| 欧美三级韩国三级日本一级| 日韩av一区二区三区| 欧美岛国在线观看| 99精品偷自拍| 麻豆精品久久久| 国产精品视频yy9299一区| 色婷婷久久久亚洲一区二区三区| 日韩在线一二三区| 国产欧美日韩视频在线观看| 欧美日韩国产大片| 国产精品资源在线看| 伊人夜夜躁av伊人久久| 日韩片之四级片| 一本一道久久a久久精品综合蜜臀| 日本成人在线电影网| 国产精品情趣视频| 欧美一级生活片| 色婷婷亚洲综合| 国产.欧美.日韩| 婷婷丁香久久五月婷婷| 国产精品久久久久婷婷二区次| 这里只有精品免费| 91在线一区二区| 国产精品一区二区久激情瑜伽| 亚洲一二三区视频在线观看| 国产精品你懂的| 欧美大片一区二区三区| 欧美色中文字幕| 91在线看国产| 高清久久久久久| 国产精品资源站在线| 美腿丝袜在线亚洲一区| 亚洲一二三区视频在线观看| 亚洲免费资源在线播放| 国产精品美女久久福利网站| 久久久www成人免费毛片麻豆 | 91精品国产黑色紧身裤美女| 99re免费视频精品全部| 国产成人午夜电影网| 精品在线一区二区| 日本色综合中文字幕| 三级亚洲高清视频| 日韩精彩视频在线观看| 性做久久久久久免费观看欧美| 樱花草国产18久久久久| 亚洲自拍偷拍图区| 亚洲影院久久精品| 亚洲国产精品一区二区www在线| 一区二区三区资源| 一区二区国产盗摄色噜噜| 亚洲一区二区三区小说| 亚洲不卡av一区二区三区| 亚洲国产另类av| 日韩av中文字幕一区二区| 青椒成人免费视频| 日本va欧美va精品发布| 狠狠色伊人亚洲综合成人| 久久成人免费电影| 国产精品69毛片高清亚洲| 成人精品鲁一区一区二区| 成人高清免费在线播放| 91麻豆产精品久久久久久| 在线免费av一区| 精品三级av在线| 国产精品色哟哟| 午夜激情综合网| 狠狠色狠狠色综合| 91视视频在线观看入口直接观看www | 国产日韩欧美一区二区三区综合| 久久精品水蜜桃av综合天堂| 欧美激情在线观看视频免费| 一区二区三区在线视频观看58| 天天影视涩香欲综合网| 国产在线播放一区| 91年精品国产| 欧美xxxxxxxx| 一区二区三区在线观看视频| 麻豆精品在线观看| av网站一区二区三区| 欧美系列亚洲系列| 久久综合久久鬼色| 亚洲精品自拍动漫在线| 精品亚洲成a人在线观看| 91色婷婷久久久久合中文| 欧美一卡2卡三卡4卡5免费| 国产精品久久久久久久久免费樱桃 | 国产黑丝在线一区二区三区| 欧美视频一区在线观看| 国产三级精品视频| 喷水一区二区三区| 91免费视频大全| 久久毛片高清国产| 亚洲r级在线视频| av欧美精品.com| www精品美女久久久tv| 亚洲一区在线观看免费观看电影高清| 国产一区二区三区四| 欧美欧美午夜aⅴ在线观看| 国产精品国产三级国产三级人妇| 美国十次了思思久久精品导航| 色噜噜狠狠成人网p站| 欧美国产日韩亚洲一区| 久久99精品久久久久久| 欧美一区二区三区免费大片| 一区二区三区在线免费视频| 99精品视频在线观看免费| 久久久综合九色合综国产精品| 日本成人中文字幕| 91精品中文字幕一区二区三区 | 亚洲视频你懂的| 成人激情黄色小说| 久久久99精品免费观看| 日本中文字幕一区二区视频| 欧美亚洲尤物久久| 亚洲欧美日韩国产一区二区三区 | 在线不卡的av| 丝袜亚洲另类欧美| 欧美三级在线看| 亚洲制服丝袜一区| 色综合av在线| 亚洲精品成人少妇| 在线观看不卡视频| 亚洲国产va精品久久久不卡综合| 色欧美日韩亚洲| 亚洲一区二区影院| 欧美丰满嫩嫩电影| 麻豆视频观看网址久久| 精品国产91久久久久久久妲己| 久久成人综合网| 国产精品久久久久久久久晋中| eeuss鲁片一区二区三区在线看| 中文字幕中文字幕在线一区| 色诱亚洲精品久久久久久| 一区二区高清在线| 欧美一级精品在线| 国产精品综合av一区二区国产馆| 国产欧美精品区一区二区三区| jiyouzz国产精品久久| 亚洲午夜久久久久| 欧美一区二区美女| 国产盗摄一区二区| 亚洲精品视频在线看| 欧美三级三级三级爽爽爽| 另类人妖一区二区av| 日本一区二区成人在线| 欧洲亚洲国产日韩| 精品一区二区免费| 亚洲天天做日日做天天谢日日欢 | 26uuuu精品一区二区| www.一区二区| 视频在线在亚洲| 国产欧美一区在线| 欧美日韩日日夜夜| 国产suv精品一区二区三区| 一区二区日韩av| 2024国产精品| 精品视频资源站| 国产福利一区二区| 亚洲超碰精品一区二区| 日本一区二区三区久久久久久久久不 | 婷婷综合五月天| 国产精品视频线看| 日韩精品在线网站| 欧洲一区二区av| 成人少妇影院yyyy| 免费在线观看视频一区| 国产精品久久久久久久久免费樱桃| 91精品国产色综合久久ai换脸| 成人精品国产一区二区4080| 免费日韩伦理电影| 亚洲欧美日韩人成在线播放| 久久综合九色综合欧美亚洲| 欧美日韩国产区一| 99精品国产99久久久久久白柏| 看电视剧不卡顿的网站| 一二三四社区欧美黄| 国产欧美日韩中文久久| 欧美一二三区在线观看| 91亚洲男人天堂| 国产成人欧美日韩在线电影| 免费的国产精品| 天堂va蜜桃一区二区三区| 亚洲精品视频免费观看| 国产日韩成人精品| 精品久久一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲欧洲日产国产综合网| 精品国产91九色蝌蚪| 91精品国产欧美一区二区成人| 色婷婷精品久久二区二区蜜臂av | 亚洲福利一区二区三区| 亚洲黄网站在线观看| 亚洲欧洲在线观看av|