ホームページ  >  記事  >  バックエンド開発  >  phpジョセフの質問の意味と使い方

phpジョセフの質問の意味と使い方

墨辰丷
墨辰丷オリジナル
2018-06-12 10:39:221398ブラウズ

この記事では主に、Joseph の問題を PHP で実現する方法を紹介します。サンプルでは、​​Joseph の問題を実現するための 2 つの一般的なテクニックをまとめています。必要な方は参考にしてください。

サンプルのまとめ。この記事は、Joseph の問題を PHP で実装する方法です。具体的な分析は次のとおりです。

サルのグループが円形に並び、1、2、...、n に従って番号が付けられます。次に、1 番目から数え始め、m 番目まで数え、円の外に追い出し、その後ろから数え始め、m 番目まで数え、追い出します...このようにして、唯一になるまで続けます。残った猿は一匹で、その猿は王様と呼ばれます。このプロセスをシミュレートするには、m、n を入力し、最後の王の番号を出力するプログラミングが必要です。

分析:

ジョセフ リングは数学の応用問題です。n 人 (それぞれ 1、2、3...n で表されます) が円卓の周りに座っていることが知られています。 。 k番の人から数え始めて、mまで数えた人が列から出て、次の人が1から数え始めて、またmまで数えた人が列から出てきます。これをラウンドが終わるまで繰り返します。テーブル みんなが出てきました。

方法 1:

<?php
function getLeader($n,$m) { 
  $res=0; 
  for($i=2; $i<=$n; $i++) {
    $res=($res+$m)%$i; 
  }
  return $res+1; 
} 
$leader = getLeader(13,34);
echo $leader;
?>

方法 2:

<?php
//定义函数
function getKing($monkeys , $m , $current = 0){
  $number = count($monkeys);
  $num = 1;
  if(count($monkeys) == 1){
    echo &#39;<font color="red">编号为&#39;.$monkeys[0].&#39;的猴子成为猴王了!</font>&#39;;
    return;
  }else{
    while($num++ < $m){
      $current++ ;
      $current = $current%$number;
    }
    echo "编号为".$monkeys[$current]."的猴子被踢掉了...<br/>";
    array_splice($monkeys , $current , 1);
    getKing($monkeys , $m , $current);
  }
}
$n=13;   //总共猴子数目
$m = 34;  //数到第几只的那只猴子被踢出去
$monkeys = range(1,$n); //将猴子编号放入数组中
getKing($monkeys , $m);   //调用函数
?>

概要: 上記がこの記事の全内容です。お役に立てば幸いです。みんなの学びが役に立ちました。

関連する推奨事項:

php で任意の基数を 10 進数に変換するメソッド

php は 2 つの配列を比較します減算メソッド

php 連想配列ソート方法

以上がphpジョセフの質問の意味と使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。