ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用して 0 ~ 8 の数字のすべての順列を生成するにはどうすればよいですか?

PHP を使用して 0 ~ 8 の数字のすべての順列を生成するにはどうすればよいですか?

DDD
リリース: 2024-12-15 10:52:10
オリジナル
487 人が閲覧しました

How to Generate All Permutations of Numbers 0-8 Using PHP?

数値の順列の計算

0 から 8 までの一連の数値が与えられた場合、タスクはこれらの数値の可能な順列をすべて生成することです。順列では、各数値は 1 回しか現れません。

この問題を理解するために、順列の数学的概念を詳しく掘り下げてみましょう。順列の公式は、一度に 'k' 取られる 'n' 個の要素の順列の合計数が次の式で与えられることを示しています。

1

nPk = n!/(n-k)!

ログイン後にコピー

この場合、9 つの数値すべてを並べ替えたいので、 k = n = 9。結果は 9 になります。 = 362880 の可能な順列。

PHP 実装

PHP は、順列を生成する機能を提供します。次のコードに示すように、この目的には pc_permute() 関数を使用できます。

1

2

3

4

5

6

7

8

9

10

11

12

13

function pc_permute($items, $perms = array()) {

    if (empty($items)) {

        echo join(' ', $perms) . "\n";

    else {

        for ($i = count($items) - 1; $i >= 0; $i--) {

             $newitems = $items;

             $newperms = $perms;

             list($foo) = array_splice($newitems, $i, 1);

             array_unshift($newperms, $foo);

             pc_permute($newitems, $newperms);

         }

    }

}

ログイン後にコピー

出力例

pc_permute() 関数を利用して、 0 から 8 までの数字のすべての順列を出力できます:

1

pc_permute(array(0, 1, 2, 3, 4, 5, 7, 8));

ログイン後にコピー

これは次の出力を生成します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 8 7

0 1 2 3 4 5 7 6 8

0 1 2 3 4 5 7 8 6

0 1 2 3 4 6 5 7 8

0 1 2 3 4 6 7 8 5

0 1 2 3 4 7 5 6 8

0 1 2 3 4 7 5 8 6

0 1 2 3 4 7 6 5 8

0 1 2 3 4 7 6 8 5

0 1 2 3 4 7 8 5 6

0 1 2 3 4 7 8 6 5

0 1 2 3 4 8 5 6 7

0 1 2 3 4 8 5 7 6

0 1 2 3 4 8 6 5 7

0 1 2 3 4 8 6 7 5

0 1 2 3 4 8 7 5 6

0 1 2 3 4 8 7 6 5

0 1 2 3 5 4 6 7 8

0 1 2 3 5 4 6 8 7

0 1 2 3 5 4 7 6 8

0 1 2 3 5 4 7 8 6

0 1 2 3 5 4 8 6 7

0 1 2 3 5 4 8 7 6

0 1 2 3 5 6 4 7 8

0 1 2 3 5 6 4 8 7

0 1 2 3 5 6 7 4 8

0 1 2 3 5 6 7 8 4

0 1 2 3 5 6 8 4 7

0 1 2 3 5 6 8 7 4

0 1 2 3 5 7 4 6 8

0 1 2 3 5 7 4 8 6

0 1 2 3 5 7 6 4 8

0 1 2 3 5 7 6 8 4

0 1 2 3 5 7 8 4 6

0 1 2 3 5 7 8 6 4

0 1 2 3 5 8 4 6 7

0 1 2 3 5 8 4 7 6

0 1 2 3 5 8 6 4 7

0 1 2 3 5 8 6 7 4

0 1 2 3 5 8 7 4 6

0 1 2 3 5 8 7 6 4

0 1 2 3 6 4 5 7 8

0 1 2 3 6 4 5 8 7

0 1 2 3 6 4 7 5 8

0 1 2 3 6 4 7 8 5

0 1 2 3 6 4 8 5 7

0 1 2 3 6 4 8 7 5

0 1 2 3 6 5 4 7 8

0 1 2 3 6 5 4 8 7

0 1 2 3 6 5 7 4 8

0 1 2 3 6 5 7 8 4

0 1 2 3 6 5 8 4 7

0 1 2 3 6 5 8 7 4

0 1 2 3 6 7 4 5 8

0 1 2 3 6 7 4 8 5

0 1 2 3 6 7 5 4 8

0 1 2 3 6 7 5 8 4

0 1 2 3 6 7 8 4 5

0 1 2 3 6 7 8 5 4

0 1 2 3 6 8 4 5 7

0 1 2 3 6 8 4 7 5

0 1 2 3 6 8 5 4 7

0 1 2 3 6 8 5 7 4

0 1 2 3 6 8 7 4 5

0 1 2 3 6 8 7 5 4

0 1 2 3 7 4 5 6 8

0 1 2 3 7 4 5 8 6

0 1 2 3 7 4 6 5 8

0 1 2 3 7 4 6 8 5

0 1 2 3 7 4 8 5 6

0 1 2 3 7 4 8 6 5

ログイン後にコピー

以上がPHP を使用して 0 ~ 8 の数字のすべての順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート