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

浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠
  1. /*分治法――直接选择 
  2. 比如说a b c 
  3. 首先将a之后的字符依次与a进行交换 
  4. 1 b,a,c 
  5. 2 c,b,a 
  6. 注意这里少了一个原始数据 a,b,c。需要把原始数据也算如排列中 
  7. 3 a,b,c 
  8.   
  9. 然后把字符移到第二个位置,将第二个位置之后的数分别与第二个位置的数进行交换 
  10. 1 b,a,c ===> 11 b,c,a 
  11. 2 c,b,a ===> 21 c,a,b 
  12. 3 a,b,c ===> 31 a,c,b 
  13.   
  14. **/ 
  15. functionzuhe($arr,$begin){ 
  16.   if(!is_array($arr))return
  17.   $N=count($arr); 
  18.   if($begin==$N-1 ||$begin>$N||$begin<0)return
  19.   if($begin== 0){ 
  20.     print_r($arr);//输出原始数据 
  21.     echo'' 
  22.   } 
  23.   //循环将初始值与第i个值交换后进行组合 
  24.   for($i=$begin;$i<$N;$i++){ 
  25.   
  26.     $t=$arr[$begin]; 
  27.     $arr[$begin] =$arr[$i]; 
  28.     $arr[$i] =$t
  29.   
  30.     if($i!==$begin){//i==begin时的数已经输出过 
  31.       print_r($arr); 
  32.       echo'' 
  33.     } 
  34.     zuhe($arr,$begin+1);  
  35.     $t=$arr[$begin]; 
  36.     $arr[$begin] =$arr[$i]; 
  37.     $arr[$i] =$t
  38.   
  39.   } 
  40.   
  41. $arr=array('a','b','c','d'); 
  42. //zuhe($arr,0); 
  43.   
  44.   
  45. /*分治法――直接插入 
  46. 初始时从0个元素开始,输出初始序列,为组合的一个序列 
  47. 当在来一个元素时只需将该元素放在该元素之前的元素组的不同的位置即组成了不同的排列 
  48. 如已有元素组为a,b.新元素为c,把c分别与a,b进行交换即可(a,c,b);(c,b,a),在现有的排列上在新增元素 
  49. 重复执行以上步骤 
  50. */ 
  51. functionzuhe2($arr,$begin){ 
  52.   if($begin==0) { 
  53.     print_r($arr); 
  54.     echo""
  55.     //zuhe2($arr,$begin+1); 
  56.   } 
  57.   if($begin>=count($arr))return
  58.   zuhe2($arr,$begin+1);//begin时的排列上一次已产生,直接新增元素 
  59.   for($i=$begin-1;$i>=0;$i–){ 
  60.     $t=$arr[$begin]; 
  61.     $arr[$begin] =$arr[$i]; 
  62.     $arr[$i] =$t
  63.     print_r($arr); 
  64.     echo""
  65.     zuhe2($arr,$begin+1); 
  66.     $t=$arr[$begin]; 
  67.     $arr[$begin] =$arr[$i]; 
  68.     $arr[$i] =$t//phpfensi.com 
  69.   } 

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

Adminn.Cn 站长分享圈

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

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏