この記事では、Josephの問題をPHPで実装する方法を主に紹介します。サンプルは、Josephの問題を実装するための2つの一般的なテクニックをまとめたもので、必要な友人は参照できます。それに
この記事の例は、Joseph の問題を PHP で実装する方法をまとめたものです。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
猿のグループが円を描くように並び、1、2、...、n の番号が付けられます。次に、1 番目から数え始め、m 番目まで数え、円の外に追い出し、その後ろから数え始め、m 番目まで数え、追い出します...このようにして、唯一になるまで続けます。残った猿は一匹で、その猿は王様と呼ばれます。このプロセスをシミュレートするには、m、n を入力し、最後の王の番号を出力するプログラミングが必要です。
分析:
ジョセフ リングは数学の応用問題です。n 人 (それぞれ 1、2、3...n で表されます) が円卓の周りに座っていることが知られています。 k番の人から数え始めて、mまで数えた人が列から出て、次の人が1から数え始めて、またmまで数えた人が列から出てきます。これをラウンドが終わるまで繰り返します。テーブル みんなが出てきました。
方法 1:
?
1 2 3 4 5 6 7 8 9 10 11 |
関数 getLeader($n,$m) { $res=0; for($i=2; $i<=$n; $i++) { $res=($res+$m)%$i; } $res+1 を返す; } $leader = getLeader(13,34); エコー $リーダー; ?> |
方法 2:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//関数を定義する 関数 getKing($monkeys, $m, $current = 0){ $number = count($monkeys); $num = 1; if(count($monkeys) == 1){ エコー「番号「.$monkeys[0].」の猿が猿の王になりました!'; 戻る; }その他{ while($num++ $現在++ ; $current = $current%$number; } echo "「.$monkeys[$current] という番号のサル。」が追い出されました... array_splice($monkeys , $current , 1); getKing($monkeys, $m, $current); } } $n=13 //サルの総数 ;$m = 34 //追い出される番号の猿 $monkeys = range(1,$n); //配列に猿の番号を入れます getKing($monkeys, $m) //関数を呼び出す ;?> |
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。