PHP 计算排列组合的函数

| 暂无评论 | 暂无引用通告

PHP 计算排列组合的函数

  1. $CombinList[0][0] = 'a1';
  2. $CombinList[0][1] = 'a2';
  3. $CombinList[1][0] = 'b4';
  4. $CombinList[1][1] = 'b5';
  5. $CombinList[1][2] = 'b6';
  6. $CombinList[2][0] = 'c7';
  7. $CombinList[2][1] = 'c8';
  8.  
  9. function combin($CombinList){
  10. $CombineCount = 1;
  11. foreach($CombinList as $Key => $Value){
  12. $CombineCount *= count($Value);
  13. }
  14. $RepeatTime = $CombineCount;
  15. foreach($CombinList as $ClassNo => $StudentList){
  16. $RepeatTime = $RepeatTime/count($StudentList);
  17. $StartPosition = 1;
  18. foreach($StudentList as $Student){
  19. $TempStartPosition = $StartPosition;
  20. $SpaceCount = $CombineCount/count($StudentList)/$RepeatTime;
  21. for($J = 1; $J <= $SpaceCount; $J ++){
  22. for($I = 0; $I < $RepeatTime; $I ++){
  23. $Result[$TempStartPosition + $I][$ClassNo] = $Student;
  24. }
  25. $TempStartPosition += $RepeatTime * count($StudentList);
  26. }
  27. $StartPosition += $RepeatTime;
  28. }
  29. }
  30. return $Result;
  31. }
  32.  
  33. echo "<pre>";
  34. $Result = combin($CombinList);
  35. print_r($Result);
  36. foreach($Result as $k=>$v){
  37. echo(implode('-', $v));
  38. echo($wrap);
  39. }
  40. echo "</pre>";
  41.  
  42. /*
  43. 结果是:
  44.  
  45. Array
  46. (
  47.   [1] => Array
  48.   (
  49.   [0] => a1
  50.   [1] => b4
  51.   [2] => c7
  52.   )
  53.  
  54.   [2] => Array
  55.   (
  56.   [0] => a1
  57.   [1] => b4
  58.   [2] => c8
  59.   )
  60.  
  61.   [3] => Array
  62.   (
  63.   [0] => a1
  64.   [1] => b5
  65.   [2] => c7
  66.   )
  67.  
  68.   [4] => Array
  69.   (
  70.   [0] => a1
  71.   [1] => b5
  72.   [2] => c8
  73.   )
  74.  
  75.   [5] => Array
  76.   (
  77.   [0] => a1
  78.   [1] => b6
  79.   [2] => c7
  80.   )
  81.  
  82.   [6] => Array
  83.   (
  84.   [0] => a1
  85.   [1] => b6
  86.   [2] => c8
  87.   )
  88.  
  89.   [7] => Array
  90.   (
  91.   [0] => a2
  92.   [1] => b4
  93.   [2] => c7
  94.   )
  95.  
  96.   [8] => Array
  97.   (
  98.   [0] => a2
  99.   [1] => b4
  100.   [2] => c8
  101.   )
  102.  
  103.   [9] => Array
  104.   (
  105.   [0] => a2
  106.   [1] => b5
  107.   [2] => c7
  108.   )
  109.  
  110.   [10] => Array
  111.   (
  112.   [0] => a2
  113.   [1] => b5
  114.   [2] => c8
  115.   )
  116.  
  117.   [11] => Array
  118.   (
  119.   [0] => a2
  120.   [1] => b6
  121.   [2] => c7
  122.   )
  123.  
  124.   [12] => Array
  125.   (
  126.   [0] => a2
  127.   [1] => b6
  128.   [2] => c8
  129.   )
  130.  
  131. )
  132. a1-b4-c7
  133. a1-b4-c8
  134. a1-b5-c7
  135. a1-b5-c8
  136. a1-b6-c7
  137. a1-b6-c8
  138. a2-b4-c7
  139. a2-b4-c8
  140. a2-b5-c7
  141. a2-b5-c8
  142. a2-b6-c7
  143. a2-b6-c8
  144. */

View this snippet on OpenTags.org

暂无引用通告

发送引用通告网址: http://wangblog.org/cgi-bin/mt/tb.cgi/260.
如果您想引用这篇日记到您的Blog,请复制上面的链接,放置到您发表文章时的相应界面中。

发表评论

Mr Wang

王炜,现在福建泉州从事 B2C 电子商务。爱好编程,业余时间在 FreeBSD / Apache / PHP / PostgerSQL 平台开发 B/S 架构的免费软件。

订阅Feed 订阅 王炜's Blog

Follow Google Buzz Twitter Facebook LinkedIn Sina

收藏王炜's Blog

关于此日记

此日记由 王炜 发表于 2009年11月 4日 23:11

此Blog上的上一篇日记JavaScript 计算排列组合的函数

此Blog上的下一篇日记《未来战警》Surrogates

首页归档页可以看到最新的日记和所有日记。