Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung zur Implementierung des Joseph-Ring-Problems in PHP

Ausführliche Erklärung zur Implementierung des Joseph-Ring-Problems in PHP

jacklove
jackloveOriginal
2018-07-06 17:53:172022Durchsuche

In diesem Artikel wird hauptsächlich die Methode zur Realisierung des Joseph-Ring-Problems in PHP vorgestellt und die relevanten Betriebstechniken von PHP mithilfe von Schleifen und Rekursion zur Realisierung des Joseph-Ring-Problems anhand von Beispielen analysiert

Die Beispiele in diesem Artikel sind eine Methode zur Implementierung des Joseph-Ring-Problems in PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1. Übersicht

Werfen wir zunächst einen Blick auf das Weitere Häufige Beschreibungen des Joseph-Ring-Problems im Internet: Der Joseph-Ring (Joseph-Problem) ist ein mathematisches Anwendungsproblem: Es ist bekannt, dass n Personen (dargestellt durch die Zahlen 1, 2, 3...n) an einem runden Tisch sitzen. Beginnen Sie mit dem Zählen bei der Person mit der Nummer k, und die Person, die bis m zählt, verlässt die Warteschlange; die nächste Person beginnt mit dem Zählen bei 1, und die Person, die bis m zählt, verlässt die Warteschlange erneut, bis die Runde vorbei ist Tisch Alle Leute kamen heraus. Wenn wir diese Art von Problem lösen, nummerieren wir es normalerweise von 0 bis n-1, und das Endergebnis + 1 ist die Lösung des ursprünglichen Problems.

2. Implementierungscode

1. Schleife

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);

Laufergebnis:

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

2. Rekursion

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);

Laufergebnisse:

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

Artikel, die Sie interessieren könnten:

Eine Erklärung der Methode zur Verwendung von Passport zur Implementierung der Auth-Authentifizierung in Laravel5.5

Leistungsoptimierungstools, die Sie in PHP möglicherweise übersehen: Generatorbezogene Inhalte

Detaillierte Implementierung des automatischen Ladens von Composer im Laravel-Framework

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Implementierung des Joseph-Ring-Problems in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn