この記事では主に、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 '<font color="red">编号为'.$monkeys[0].'的猴子成为猴王了!</font>'; 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ジョセフの質問の意味と使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。