请教一个列举 请教,如何列出26个字母和10个阿拉伯数字组成的三个字符组合? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老徐(版主)写过这样一个函数/*** 组合 ***/function combination( $arr, $num=0) { $len = count($arr); if($num == 0) $num = $len; $res = array(); for($i=1,$n=pow(2, $len);$i<$n;++$i) { $tmp = str_pad(base_convert($i, 10, 2), $len, '0', STR_PAD_LEFT); $t = array(); for($j=0;$j<$len;++$j) { if($tmp{$j} == '1') { $t[] = $arr[$j]; } } if(count($t) == $num) $res[] = $t; } return $res;} $arr 由0-9,a-z填充很难比这样更快啦for($i=0;$i<36;$i++){ for($j=0;$j<36;$j++) { for($l=0;$l<36;$l++) { $arr[$i].$arr[$j].$arr[$l]; } }} 元素可重复组合用这个,不可重复循环边界微调一下即可很难更快啦for($i=0;$i<36;$i++){ for($j=$i;$j<36;$j++) { for($l=$j;$l<36;$l++) { $arr[$i].$arr[$j].$arr[$l]; } }} 本帖最后由 xuzuning 于 2012-07-05 14:51:56 编辑 前面提了,$arr 由0-9,a-z组成,直观简单的思维,效率非常高的 $arr = str_split('abcdefghigklmnopqrstuvwxyz0123456789');$len = count($arr);$list = array();for ($i = 0; $i < $len; $i++) { for ($j = 0; $j < $len; $j++) { for ($k = 0; $k < $len; $k++) { $list[] = $arr[$i] . $arr[$j] . $arr[$k]; } }}echo '<pre>';print_r($list); JSON问题 PHP操作Excel有什么好的方法没?现在调用perl的函数,感觉太麻烦。 急切需要一个留言板的源码。 【xuzuning 】版主求教,有问题啊,各位高手围观。 虚心请教怎样制作个人主页免费空间系统? 请资深人士开讲座——数据的传递 用text做数据库,怎么分页?! 用socket函数发邮件? 关于imagecrete()函数的奇怪的问题 如何在php中向oracle数据库插入日期时间型数据? 如果知道id为2了,怎么一次搜索得出 “新闻 新闻下级”呢?? 使用PHP+Sphinx建立高效的站内搜索引擎
/*** 组合 ***/
function combination( $arr, $num=0) {
$len = count($arr);
if($num == 0) $num = $len;
$res = array();
for($i=1,$n=pow(2, $len);$i<$n;++$i) {
$tmp = str_pad(base_convert($i, 10, 2), $len, '0', STR_PAD_LEFT);
$t = array();
for($j=0;$j<$len;++$j) {
if($tmp{$j} == '1') {
$t[] = $arr[$j];
}
}
if(count($t) == $num) $res[] = $t;
}
return $res;
}
很难比这样更快啦for($i=0;$i<36;$i++)
{
for($j=0;$j<36;$j++)
{
for($l=0;$l<36;$l++)
{
$arr[$i].$arr[$j].$arr[$l];
}
}
}
{
for($j=$i;$j<36;$j++)
{
for($l=$j;$l<36;$l++)
{
$arr[$i].$arr[$j].$arr[$l];
}
}
}
前面提了,$arr 由0-9,a-z组成,直观简单的思维,效率非常高的
$len = count($arr);
$list = array();
for ($i = 0; $i < $len; $i++) {
for ($j = 0; $j < $len; $j++) {
for ($k = 0; $k < $len; $k++) {
$list[] = $arr[$i] . $arr[$j] . $arr[$k];
}
}
}
echo '<pre>';print_r($list);