欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實(shí)現(xiàn)約瑟夫環(huán)問(wèn)題的方法分析

 更新時(shí)間:2017年12月07日 10:28:02   作者:Shower稻草人  
這篇文章主要介紹了PHP實(shí)現(xiàn)約瑟夫環(huán)問(wèn)題的方法,結(jié)合實(shí)例形式分析了php使用循環(huán)與遞歸實(shí)現(xiàn)約瑟夫環(huán)的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了PHP實(shí)現(xiàn)約瑟夫環(huán)問(wèn)題的方法。分享給大家供大家參考,具體如下:

一、概述

先來(lái)看看網(wǎng)上比較常見(jiàn)的約瑟夫環(huán)問(wèn)題描述:約瑟夫環(huán)(約瑟夫問(wèn)題)是一個(gè)數(shù)學(xué)的應(yīng)用問(wèn)題:已知n個(gè)人(以編號(hào)1,2,3...n分別表示)圍坐在一張圓桌周?chē)?。從編?hào)為k的人開(kāi)始報(bào)數(shù),數(shù)到m的那個(gè)人出列;他的下一個(gè)人又從1開(kāi)始報(bào)數(shù),數(shù)到m的那個(gè)人又出列;依此規(guī)律重復(fù)下去,直到圓桌周?chē)娜巳砍隽?。通常解決這類(lèi)問(wèn)題時(shí)我們把編號(hào)從0~n-1,最后結(jié)果+1即為原問(wèn)題的解。

二、實(shí)現(xiàn)代碼

1. 循環(huán)

function circle($arr,$idx,$k){
  for($i=0;$i<$idx;$i++){
    $tmp = array_shift($arr);
    array_push($arr,$tmp);
  }
  $j = 1;
  while(count($arr) > 0){
    $tmp = array_shift($arr);
    if($j++%$k == 0){
      echo $tmp."\n";
    }else{
      array_push($arr,$tmp);
    }
  }
}
$arr = array(1,2,3,4,5,6,7,8,9,10,11,12);
$idx = 3;
$k = 4;
circle($arr,$idx,$k);

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

7 11 3 8 1 6 2 10 9 12 5 4 

2. 遞歸

function circle($arr,$idx,$k){
  $len = count($arr);
  $i = 1;
  if($len == 1){
    echo $arr[0]."\n";
    return ;
  } else {
    while($i++ < $k){
      $idx++;
      $idx = $idx%$len;
    }
    echo $arr[$idx]."\n";
    array_splice($arr,$idx,1);
    circle($arr,$idx,$k);
  }
}
$arr = [1,2,3,4,5,6,7,8,9,10,11,12];
$idx = 3;
$k = 4;
circle($arr,$idx,$k);

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

7 11 3 8 1 6 2 10 9 12 5 4

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

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

相關(guān)文章

最新評(píng)論