www.adminn.cn
站长正能量分享网!

使用php计算排列组合的方法

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

本文用PHP要解决的数学问题是算出C(a,1) * C(b, 1) * … * C(n, 1)的组合情况,其中C(n, 1)代表从n个元素里任意取一个元素,前些天因为业务需要写了一段计算排列组合的代码,今天整理了一下,以备后用:

  1. <?php 
  2. /** 
  3.  * 要解决的数学问题    :算出C(a,1) * C(b, 1) * … * C(n, 1)的组合情况,其中C(n, 1)代表从n个元素里任意取一个元素 
  4.  * 
  5.  * 要解决的实际问题样例:某年级有m个班级,每个班的人数不同,现在要从每个班里抽选一个人组成一个小组, 
  6.  *                       由该小组来代表该年级参加学校的某次活动,请给出所有可能的组合 
  7.  */ 
  8. /* ################################### 开始计算 ################################### */ 
  9. /** 
  10.  * 需要进行排列组合的数组 
  11.  * 
  12.  * 数组说明:该数组是一个二维数组,第一维索引代表班级编号,第二维索引代表学生编号 
  13.  */ 
  14. $CombinList = array(1 => array("Student10""Student11"), 
  15.                     2 => array("Student20""Student21""Student22"), 
  16.                     3 => array("Student30"), 
  17.                     4 => array("Student40""Student41""Student42""Student43")); 
  18. /* 计算C(a,1) * C(b, 1) * … * C(n, 1)的值 */ 
  19. $CombineCount = 1; 
  20. foreach($CombinList as $Key => $Value
  21.     $CombineCount *= count($Value); 
  22. $RepeatTime = $CombineCount
  23. foreach($CombinList as $ClassNo => $StudentList
  24.     // $StudentList中的元素在拆分成组合后纵向出现的最大重复次数 
  25.     $RepeatTime = $RepeatTime / count($StudentList); 
  26.     $StartPosition = 1; 
  27.     // 开始对每个班级的学生进行循环 
  28.     foreach($StudentList as $Student
  29.     { 
  30.         $TempStartPosition = $StartPosition
  31.         $SpaceCount = $CombineCount / count($StudentList) / $RepeatTime
  32.         for($J = 1; $J <= $SpaceCount$J ++) 
  33.         { 
  34.             for($I = 0; $I < $RepeatTime$I ++) 
  35.             { 
  36.                $Result[$TempStartPosition + $I][$ClassNo] = $Student
  37.             } 
  38.             $TempStartPosition += $RepeatTime * count($StudentList); 
  39.         } 
  40.         $StartPosition += $RepeatTime
  41.     } //phpfensi.com 
  42. /* 打印结果 */ 
  43. echo "<pre>"
  44. print_r($Result); 
  45. ?> 

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《使用php计算排列组合的方法》
文章链接:https://www.adminn.cn/news/7841.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏