登录  /  注册
一个排列组合算法有关问题 抛砖引玉一上
php中文网
发布: 2016-06-13 11:08:12
原创
661人浏览过

一个排列组合算法问题 抛砖引玉一下
中学时候都学过 排列组合 1 2 3 4 5 6可以组成720个不同的字符串
这里写了一个粗糙的实现方法 例为 1- 6
希望哪个高手可以指点一二
$j=0;
for($i=123456;$i<=$number;$i++){
$box=array();

$ge =$i%10;
if($ge>6 || $ge==0){
continue;
}
$box[]=$ge;
$shi = intval($i/10)%10;
if($shi>6 || $shi ==0){
continue;
}
$box[]=$shi;
$bai = intval($i/100)%10;
if($bai>6 || $bai ==0){
continue;
}
$box[]=$bai;
$qian = intval($i/1000)%10;
if($qian>6 || $qian ==0){
continue;
}
$box[]=$qian;
$wan = intval($i/10000)%10;
if($wan>6 || $wan ==0){
continue;
}
$box[]=$wan;
$shiwan = intval($i/100000);
if($shiwan>6 || $shiwan ==0){
continue;
}
$box[]=$shiwan;
//echo count(array_unique($box));
//echo '
';
//var_dump(array_unique($box));
//echo '
';
if(count(array_unique($box))!=6){
continue;
}

if($j%10==0){
echo "
";
}
$j++;
echo ' ',$i,' ';
}
echo "
";
echo "一共{$j}个";
------解决方案--------------------
$a = perm(array(1,2,3,4,5,6));
echo count($a);
//print_r($a);

function perm($list, $k=0, $m=0) {
if(! $m) $m = count($list) - 1;
$r = array();
if($k >= $m) {
$r[] = join('', $list);
}else {
for($i = $k; $i <= $m; $i++) {
list($list[$k], $list[$i]) = array($list[$i], $list[$k]);
$r = array_merge($r, perm($list, $k + 1, $m));
list($list[$k], $list[$i]) = array($list[$i], $list[$k]);
}
}
return $r;
}
登录后复制

720

相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学