亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP使用棧解決約瑟夫環(huán)問題算法示例

 更新時(shí)間:2017年08月27日 12:20:22   作者:alian_c  
這篇文章主要介紹了PHP使用棧解決約瑟夫環(huán)問題算法,簡(jiǎn)單描述了約瑟夫環(huán)問題并給出了PHP使用棧解決約瑟夫環(huán)的相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下

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

約瑟夫環(huán)問題: 39 個(gè)猶太人與Josephus及他的朋友躲到一個(gè)洞中,39個(gè)猶太人決定寧愿死也不要被敵人抓。于是決定了自殺方式,41個(gè)人排成一個(gè)圓圈,由第1個(gè)人開始報(bào)數(shù),每報(bào)數(shù)到第3人該人就必須自殺。然后下一個(gè)重新報(bào)數(shù),直到所有人都自殺身亡為止。然而Josephus 和他的朋友并不想遵從,Josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個(gè)與第31個(gè)位置,于是逃過了這場(chǎng)死亡游戲。

<?php
class ArrayStack
{
  private $size;
  private $stack = [];
  public function __construct(){}
  public function buildStack($num){
    $this->size = $num;
    $index = 0;
    while($index ++ < $this->size)
    {
      $this->stack[] = $index;
    }
  }
  public function pop(){
    $item = array_shift($this->stack);
    $this->size = count($this->stack);
    return $item;
  }
  public function push($item)
  {
    $this->stack[] = $item;
    $this->size = count($this->stack);
  }
  public function size()
  {
    return $this->size;
  }
  public function stack()
  {
    return $this->stack;
  }
}
interface Joseph
{
  public function handle($num = 0, $step = 0, $survivors = 0);
}
class StackJoseph implements Joseph
{
  protected $stack;
  protected $num;
  protected $step;
  public function __construct(ArrayStack $stack)
  {
    $this->stack = $stack;
  }
  public function handle($num = 0, $step = 0, $survivors = 0)
  {
    // TODO: Implement handle() method.
    $this->stack->buildStack($num);
    $i = 0;
    while($this->stack->size() > $survivors)
    {
      $pop = $this->stack->pop();
      if(($i + 1) % $step !== 0)
      {
        $this->stack->push($pop);
        $i ++;
      }
      else
      {
        $i = 0;
      }
    }
    return $this->stack->stack();
  }
}
function joseph($num, $step, $survivorsNum)
{
  $arrayStack = new ArrayStack();
  $joseph = new StackJoseph($arrayStack);
  return $joseph->handle($num, $step, $survivorsNum);
}
print_r(joseph(41, 3, 2));

執(zhí)行結(jié)果:

Array
(
  [0] => 16
  [1] => 31
)

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

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

相關(guān)文章

  • PHP細(xì)數(shù)實(shí)現(xiàn)提高并發(fā)能力的方法

    PHP細(xì)數(shù)實(shí)現(xiàn)提高并發(fā)能力的方法

    這篇文章主要介紹了PHP提高并發(fā)能力有哪些方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • php Rename 更改文件、文件夾名稱

    php Rename 更改文件、文件夾名稱

    rename()命令可以實(shí)現(xiàn)文件文件夾的更名操作,而且還可以實(shí)現(xiàn)文件、文件夾的移動(dòng)操作
    2011-05-05
  • PHP的簡(jiǎn)單跳轉(zhuǎn)提示的實(shí)現(xiàn)詳解

    PHP的簡(jiǎn)單跳轉(zhuǎn)提示的實(shí)現(xiàn)詳解

    這篇文章主要介紹了PHP的簡(jiǎn)單跳轉(zhuǎn)提示的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • PHP結(jié)合Vue實(shí)現(xiàn)滾動(dòng)底部加載效果

    PHP結(jié)合Vue實(shí)現(xiàn)滾動(dòng)底部加載效果

    這篇文章主要給大家介紹了關(guān)于PHP結(jié)合Vue如何實(shí)現(xiàn)滾動(dòng)底部加載效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • PHP抓取遠(yuǎn)程圖片(含不帶后綴的)教程詳解

    PHP抓取遠(yuǎn)程圖片(含不帶后綴的)教程詳解

    最近在做微信登錄開發(fā)時(shí)候,發(fā)現(xiàn)微信頭像圖片沒有后綴名,傳統(tǒng)的圖片抓取方式不奏效,需要特殊的抓取處理。所以,后來將各種情況結(jié)合起來,封裝成一個(gè)類,分享出來給大家,感興趣的朋友們下面來一起看看吧。
    2016-10-10
  • PHP數(shù)組游標(biāo)實(shí)現(xiàn)對(duì)數(shù)組的各種操作詳解

    PHP數(shù)組游標(biāo)實(shí)現(xiàn)對(duì)數(shù)組的各種操作詳解

    這篇文章主要介紹了PHP數(shù)組游標(biāo)實(shí)現(xiàn)對(duì)數(shù)組的各種操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了PHP數(shù)組操作中current與next方法控制數(shù)組游標(biāo)移動(dòng)實(shí)現(xiàn)數(shù)組遍歷的技巧,需要的朋友可以參考下
    2016-01-01
  • php 浮點(diǎn)數(shù)比較方法詳解

    php 浮點(diǎn)數(shù)比較方法詳解

    本篇文章主要介紹了php浮點(diǎn)數(shù)比較方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-05-05
  • Laravel中間件的使用詳解

    Laravel中間件的使用詳解

    Laravel?中間件提供了一種方便的機(jī)制來過濾進(jìn)入應(yīng)用的?HTTP?請(qǐng)求。這篇文章主要和大家介紹一下Laravel中間件的創(chuàng)建和使用,需要的可以參考一下
    2023-02-02
  • WordPress網(wǎng)站訪問慢解決方案細(xì)圖文教程

    WordPress網(wǎng)站訪問慢解決方案細(xì)圖文教程

    這篇文章主要介紹了WordPress網(wǎng)站訪問慢解決方案細(xì)圖文教程,wordpress訪問慢一直是一個(gè)比較頭疼的問題,有正好需要的同學(xué)可以嘗試下,感覺不錯(cuò)的可以分享給大家
    2021-03-03
  • javascript數(shù)組與php數(shù)組的地址傳遞及值傳遞用法實(shí)例

    javascript數(shù)組與php數(shù)組的地址傳遞及值傳遞用法實(shí)例

    這篇文章主要介紹了javascript數(shù)組與php數(shù)組的地址傳遞及值傳遞用法,實(shí)例分析了javascript與php的數(shù)組使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01

最新評(píng)論