亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php使用環形鏈表解決約瑟夫問題完整示例

2024-05-05 00:04:53
字體:
來源:轉載
供稿:網友

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

約瑟夫問題:

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

PHP實現環形鏈表以及約瑟夫問題的解決:

/** * 鏈表結構 */class Child{  public $no;  public $next=null;  public function __construct($no=null){    $this->no = $no;  }}/** * 鏈表操作 */class CycleLink{  private $nodeNum = 0;  /**   * 添加節點   */  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++;  }  /**   * 刪除節點   */  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;    }  }  /**   * 獲取節點數量   */  public function getNodeNum(){    return $this->nodeNum;  }  /**   * 查找節點   */  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;  }  /**   * 顯示節點   */  public function showNode($head)  {    echo "<br/><br/>";    $currentNode = $head;    while ($currentNode->next!=$head){      $currentNode = $currentNode->next;      echo '第 '.$currentNode->no.' 名小孩<br/>';    }  }}/*//創建一個head頭,該head 只是一個頭,不放入數據$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();*//** * 約瑟夫問題 * 設編號為1,2,...n的n個人圍坐一圈,約定編號為k(1<=k<=n)的人從1開始報數,數到m的那個人出列, * 它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生一個出隊編號的序列。 * 并求出最后出列的人是哪個? */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);  // 創建小孩    echo "<br/><br/>當前有 {$n} 個小孩,從第 {$k} 個小孩開始報數,數到 {$m} 退出<br/><br/>";  }  // 數數  public function exec(){    $currentNode = $this->childList->findNode($this->head,$this->k);  // 獲取第一個開始報數的人    $_num = 0;  // 當前數到的值    $surplus_num = $this->n;    // 開始報數    while ($surplus_num>1) {  // 只要人數大于1,就繼續報數      // 當前報數值      $_num++;      $nextNode = $this->childList->getNextNode($this->head,$currentNode);      // 數至第m個數,然后將其移除。報數恢復到0,重新循環。      if( $_num==$this->m ){        $_num = 0;        $surplus_num--;        // 當前小孩退出        $this->childList->delNode($this->head,$currentNode->no);        echo '<br/>退出小孩編號:' . $currentNode->no;      }      // 移動到下一個小孩      $currentNode = $nextNode;    }    echo '<br/>最后一個小孩編號:' . $currentNode->no;  }  // 創建小孩  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();

運行結果:

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


當前有 4 個小孩,從第 1 個小孩開始報數,數到 2 退出

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费在线视频| 久久精品成人一区二区三区| 国产精品久久久久久久7电影| 色天天综合狠狠色| 日韩美女主播视频| 亚洲一级黄色av| 日韩av在线免费观看| 亚洲精品97久久| 国产精品久久久久免费a∨大胸| 久久精品国产96久久久香蕉| 久久成人18免费网站| 伊人男人综合视频网| 中文字幕日韩精品有码视频| 国产在线日韩在线| 97**国产露脸精品国产| 日韩av一区在线观看| 欧美成人小视频| 久久在精品线影院精品国产| 亚洲精品日韩久久久| 亚洲影院污污.| 国产欧美精品一区二区三区介绍| 91精品国产91久久久久久不卡| 成人网欧美在线视频| 日韩欧美在线观看| 成人黄色片网站| 一区二区三区久久精品| 97人洗澡人人免费公开视频碰碰碰| 中文字幕不卡在线视频极品| 国产午夜精品理论片a级探花| 国产日韩在线播放| 国产成人aa精品一区在线播放| 亚洲视频国产视频| 91免费的视频在线播放| 中文字幕av一区中文字幕天堂| 久久夜精品香蕉| 中文字幕亚洲综合| 国产精品久久久久久中文字| 日韩在线观看你懂的| 在线观看久久av| 欧美亚洲视频一区二区| 精品国偷自产在线视频| 亚洲精品成人久久| 亚洲综合在线中文字幕| 亚洲片国产一区一级在线观看| 成人观看高清在线观看免费| 日韩美女视频中文字幕| 亚洲白拍色综合图区| 日韩免费在线视频| 精品露脸国产偷人在视频| 91亚洲精品一区| 色琪琪综合男人的天堂aⅴ视频| 日韩风俗一区 二区| 精品福利在线视频| 国产在线高清精品| 欧美在线视频播放| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲人在线观看| 国产精品羞羞答答| 久久久久久久影视| 一区二区欧美久久| 国产一区二区三区视频| 日韩精品久久久久| 海角国产乱辈乱精品视频| 亚洲自拍偷拍福利| 高清在线视频日韩欧美| 国产主播精品在线| 日韩精品免费视频| 日韩av中文字幕在线播放| 久久亚洲精品网站| 国产91ⅴ在线精品免费观看| 久久综合色88| 在线丨暗呦小u女国产精品| 91精品免费视频| 亚洲免费伊人电影在线观看av| 欧美成人免费网| 91成人在线视频| 久久精品这里热有精品| 色综合久久悠悠| 91国在线精品国内播放| 亚洲一品av免费观看| 伊人亚洲福利一区二区三区| 奇米影视亚洲狠狠色| 欧美性猛交xxxx免费看| 日韩精品久久久久久福利| 亚洲成色777777女色窝| 精品久久久国产精品999| 国产激情综合五月久久| 伊人亚洲福利一区二区三区| 国产精品色视频| 欧美成人精品三级在线观看| 色噜噜亚洲精品中文字幕| 狠狠躁夜夜躁人人爽超碰91| 自拍偷拍亚洲区| 国产经典一区二区| 在线视频欧美日韩| 久久精品久久精品亚洲人| 国产亚洲精品久久久久久777| 亚洲国产精品免费| 日韩欧美亚洲国产一区| 精品久久久久久中文字幕| 亚洲精品aⅴ中文字幕乱码| 日韩在线资源网| 国产精品美女无圣光视频| 精品偷拍各种wc美女嘘嘘| 欧美野外猛男的大粗鳮| 亚洲欧美视频在线| 欧美性videos高清精品| 久久精品免费电影| 久久免费在线观看| 精品久久久久久久久久国产| 国产99久久精品一区二区永久免费| 国产女同一区二区| 国产精品揄拍500视频| 欧美成人免费全部| 国产成人97精品免费看片| 成人黄色在线免费| 亚洲男人的天堂网站| 97精品在线视频| 久久久久久久久久久av| 91精品久久久久久久久久| 亚洲美女视频网站| 中文字幕在线视频日韩| 国产精品一区二区性色av| 久久乐国产精品| 国产视频在线观看一区二区| 亚洲毛片在线看| 国自在线精品视频| 国产精品久久久久久久久久免费| 97精品欧美一区二区三区| 国产亚洲一区二区在线| 日韩在线观看免费av| 欧美另类第一页| 色999日韩欧美国产| 亚洲第一精品久久忘忧草社区| 91国产中文字幕| 中文字幕精品国产| 91久久精品在线| 亚洲影院在线看| 91香蕉国产在线观看| 亚洲精品在线视频| 欧美日韩亚洲成人| 国产精品h片在线播放| 国产欧美精品久久久| 91av在线免费观看| 日韩中文字幕精品视频| 亚洲精品一区二区久| 在线观看国产精品淫| 亚洲国产精品va在线看黑人| 在线视频中文亚洲| 国内精品视频久久| 97久久精品人搡人人玩| 欧美大肥婆大肥bbbbb| www.99久久热国产日韩欧美.com| 欧美激情一区二区三区成人| 亚洲美女喷白浆| 国内伊人久久久久久网站视频| 亚洲人成免费电影| 亚洲免费小视频| 亚洲人成电影在线观看天堂色| 亚洲视频在线观看视频| 亚洲综合最新在线| 亚洲色图35p| 欧美一级大胆视频| 国产一区二区丝袜高跟鞋图片|