ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルで Joseph の問題を実装する方法のまとめ

PHP_PHP チュートリアルで Joseph の問題を実装する方法のまとめ

WBOY
WBOYオリジナル
2016-07-13 10:00:38926ブラウズ

PHPでJosephの問題を実装する方法のまとめ

この記事では、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 プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/973136.html技術記事 PHP での Joseph 問題の実現方法のまとめ この記事では、PHP での Joseph 問題の実現方法を中心に紹介します。例では、確かな参考になる、Joseph 問題を実現するための 2 つの一般的なテクニックをまとめています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。