Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode für die PHP-Methode zur Berechnung von Permutationen und Kombinationen

Beispielcode für die PHP-Methode zur Berechnung von Permutationen und Kombinationen

怪我咯
怪我咯Original
2017-07-12 14:21:301487Durchsuche

Permutation und Kombination sind die grundlegendsten Konzepte der Kombinatorik. Unter der sogenannten Anordnung versteht man das Sortieren einer vorgegebenen Anzahl an Elementen aus einer vorgegebenen Anzahl an Elementen. Unter Kombination versteht man das Herausnehmen nur einer bestimmten Anzahl von Elementen aus einer bestimmten Anzahl von Elementen, unabhängig von der Sortierung. Das zentrale Problem von Permutationen und Kombinationen besteht darin, die Gesamtzahl möglicher Situationen für Permutationen und Kombinationen gegebener Anforderungen zu untersuchen. Permutation und Kombination stehen in engem Zusammenhang mit der klassischen Wahrscheinlichkeitstheorie.

Das mathematische Problem, das in diesem Artikel mit PHP gelöst werden soll, besteht darin, die Kombination von C(a,1) * C(b, 1) * ... * C(n, 1) zu berechnen, wobei C (n, 1) stellt die zufällige Auswahl eines Elements aus n Elementen dar.

Vor ein paar Tagen habe ich aus geschäftlichen Gründen einen Code geschrieben, um Permutationen und Kombinationen zu berechnen verwenden

Der Code lautet wie folgt:

<?php
/**
 * 要解决的数学问题    :算出C(a,1) * C(b, 1) * ... * C(n, 1)的组合情况,其中C(n, 1)代表从n个元素里任意取一个元素
 *
 * 要解决的实际问题样例:某年级有m个班级,每个班的人数不同,现在要从每个班里抽选一个人组成一个小组,
 *                       由该小组来代表该年级参加学校的某次活动,请给出所有可能的组合
 */
/* ################################### 开始计算 ################################### */
/**
 * 需要进行排列组合的
数组
 *
 * 数组说明:该数组是一个
二维数组
,第一维
索引
代表班级编号,第二维索引代表学生编号
 */
$CombinList = array(1 => array("Student10", "Student11"),
                    2 => array("Student20", "Student21", "Student22"),
                    3 => array("Student30"),
                    4 => array("Student40", "Student41", "Student42", "Student43"));
/* 计算C(a,1) * C(b, 1) * ... * C(n, 1)的值 */
$CombineCount = 1;
foreach
($CombinList as $Key => $Value)
{
    $CombineCount *= count($Value);
}
$RepeatTime = $CombineCount;
foreach($CombinList as $ClassNo => $StudentList)
{
    // $StudentList中的元素在拆分成组合后纵向出现的最大重复次数
    $RepeatTime = $RepeatTime / count($StudentList);
    $Start
Position
 = 1;
    // 开始对每个班级的学生进行
循环
    foreach($StudentList as $Student)
    {
        $TempStartPosition = $StartPosition;
        $SpaceCount = $CombineCount / count($StudentList) / $RepeatTime;
        for($J = 1; $J <= $SpaceCount; $J ++)
        {
            for($I = 0; $I < $RepeatTime; $I ++)
            {
               $Result[$TempStartPosition + $I][$ClassNo] = $Student;
            }
            $TempStartPosition += $RepeatTime * count($StudentList);
        }
        $StartPosition += $RepeatTime;
    }
}
/* 打印结果 */
echo "<pre class="brush:php;toolbar:false">";
print_r($Result);
?>


Das obige ist der detaillierte Inhalt vonBeispielcode für die PHP-Methode zur Berechnung von Permutationen und Kombinationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn