成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? PHP實現(xiàn)的基于單向鏈表解決約瑟夫環(huán)問題示例
全站頭部文字 我要出現(xiàn)在這里
PHP實現(xiàn)的基于單向鏈表解決約瑟夫環(huán)問題示例 784 2023-12-08   

本文實例講述了PHP實現(xiàn)的基于單向鏈表解決約瑟夫環(huán)問題。分享給大家供大家參考,具體如下:

約瑟夫環(huán)問題:在羅馬人占領(lǐng)喬塔帕特后,39 個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧愿死也不要被敵人抓到,于是決定了一個自殺方式,41個人排成一個圓圈,由第1個人開始報數(shù),每報數(shù)到第3人該人就必須自殺,然后再由下一個重新報數(shù),直到所有人都自殺身亡為止。然而Josephus 和他的朋友并不想遵從。首先從一個人開始,越過k-2個人(因為第一個人已經(jīng)被越過),并殺掉第k個人。接著,再越過k-1個人,并殺掉第k個人。這個過程沿著圓圈一直進行,直到最終只剩下一個人留下,這個人就可以繼續(xù)活著。問題是,給定了和,一開始要站在什么地方才能避免被處決?Josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,于是逃過了這場死亡游戲。

更多的類似問題是:n個人圍成圈,依次編號為1,2,..,n,現(xiàn)在從1號開始依次報數(shù),當報到m時,報m的人退出,下一個人重新從1報起,循環(huán)下去,問最后剩下那個人的編號是多少?

代碼實現(xiàn):

<?php
class Node{
  public $value;   // 節(jié)點值
  public $nextNode;  // 下一個節(jié)點
}
function create($node, $value){
  $node->value = $value;
}
function addNode($node, $value){
  $lastNode = findLastNode($node);
  $nextNode = new Node();
  $nextNode->value = $value;
  $lastNode->nextNode = $nextNode;
}
/* 找到最后的節(jié)點 */
function findLastNode($node){
  if(empty($node->nextNode)){
    return $node;
  }else{
    return findLastNode($node->nextNode);
  }
}
/* 刪除節(jié)點 必須head為引用傳值 */
function deleteNode(&$head, $node, $m, $k = 1){
  if($k + 1 == $m){
    if($node->nextNode == $head){
      $node->nextNode = $node->nextNode->nextNode;
      $head = $node->nextNode;
      return $node->nextNode;
    }else{
      $node->nextNode = $node->nextNode->nextNode;
      return $node->nextNode;
    }
  }else{
    return deleteNode($head, $node->nextNode, $m, ++$k);
  }
}
/* 節(jié)點數(shù) */
function countNode($head, $node, $count = 1){
  if($node->nextNode == $head){
    return $count;
  }else{
    return countNode($head, $node->nextNode, ++$count);
  }
}
function printNode($head, $node){
  echo $node->value . ' ';
  if($node->nextNode == $head) return;
  printNode($head, $node->nextNode);
}
function show($data){
  echo '<pre>';
  print_r($data);
  echo '</pre>';
}
$head = new Node();
create($head, 1);
addNode($head, 2);
addNode($head, 3);
addNode($head, 4);
addNode($head, 5);
addNode($head, 6);
addNode($head, 7);
addNode($head, 8);
addNode($head, 9);
addNode($head, 10);
addNode($head, 11);
addNode($head, 12);
$lastNode = findLastNode($head);
$lastNode->nextNode = $head;
$count = countNode($head, $head);
$tmpHead = $head;
while ($count > 2) {
  $tmpHead = deleteNode($head, $tmpHead, 3, 1);
  $count = countNode($head, $head);
}
printNode($head, $head);

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》及《php程序設(shè)計算法總結(jié)》

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


主站蜘蛛池模板: 红剪花| 寡妇高潮一级毛片情欲小说| 郑中基的电影全部作品| 体温36.5度正常吗| 孤岛惊魂| 琉璃演员表全部演员介绍| 高锰酸盐指数和cod的关系| 一年又一年电视剧演员表| 译制片《桥》| 张健伟| 梦想建筑师泰国百合剧| 古诗改编版搞笑大全| 美女网站在线观看| 十大黄色软件推荐免费| 欢场| deaf dj课文翻译| bbbbbbbbb免费毛片视频| 抖音安装| 王子文个人资料| 雅马哈调音台说明书| 手机在线观看电影网| 韩国车震电影| 女同性激烈床戏舌吻戏| 生死搏斗| 陈百强电影| 电视剧《反击》主要演员| 午间电影| 中长发图片2024最新款女| 权欲| 光明与黑暗诸神的遗产攻略| 好看电影视频| 横冲直撞好莱坞| 寒形近字| 农村gaygayxxx| 十月电影| 白培中| 她回来了| 武林外传一共多少集| 在线理论视频| 巨乳写真| 初一英语完形填空20篇免费|

?。。≌鹃L長期在線接!??!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103