求一个算法,如何效率最高? 比如,有一组数字:1,2,3,4( 不一定是4个,可能是5个,8个,但这数字不重复)如果排出3个(可能是2个,上面的数字增多,可能要求是6个,7个)不同的组合:结果是:1,2,31,2,42,3,4大家列下算法啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 全排列算法递归有层数限制,所以根据所谓高效率的10移动法写了个不知道效率如何,LZ拿去测试一下。function combination($numArr,$combineLen){ $numCt = count($numArr); if($combineLen > $numCt) return; //$bin = decbin((pow(2,$combineLen) - 1) << ($numCt - $combineLen)); $bin = str_pad('',$combineLen,'1'); $bin = str_pad($bin,$numCt,'0',STR_PAD_RIGHT); $find = $bin; $rs[] = implode(' ',array_slice($numArr,0,$combineLen)); $j = 1; while(strrev($find) != $bin) { $k = explode('10',$find,2); $find = $find{0} === '0' ? strrev($k[0]).'01'.$k[1] : $k[0].'01'.$k[1]; for($i=0;$i<$numCt;$i++) $rs[$j] .= $find[$i] ? $numArr[$i] . " " : ''; $j++; } return $rs;}$a = range(1,9);print_r(combination($a,4)); 怎样才能修改Linux口令 isset和empty PHP表统计,知道的说下,谢谢 问一个很菜的问题大家不要笑话 武汉有做的比较好的网站建设公司吗,php的~ CSDN这样的论坛哪里有下载的 php socket 问题,求教!!期盼能解决!! 本来应该发在javascrip版,但觉得PHP版人气旺,所以就发这了,见谅,高手解决 谁能帮我这个忙呀???~~~~在线等待...... 一个新的PHP网站。目前正在测试中。希望大家不吝赐教。给点意见. 为什么我mysql_fetch_array只收到一个元素? 大虾们来帮忙解决下全选和checkbox的问题
递归有层数限制,所以根据所谓高效率的10移动法写了个
不知道效率如何,LZ拿去测试一下。
function combination($numArr,$combineLen)
{
$numCt = count($numArr);
if($combineLen > $numCt) return;
//$bin = decbin((pow(2,$combineLen) - 1) << ($numCt - $combineLen));
$bin = str_pad('',$combineLen,'1');
$bin = str_pad($bin,$numCt,'0',STR_PAD_RIGHT);
$find = $bin;
$rs[] = implode(' ',array_slice($numArr,0,$combineLen));
$j = 1;
while(strrev($find) != $bin)
{
$k = explode('10',$find,2);
$find = $find{0} === '0' ? strrev($k[0]).'01'.$k[1] : $k[0].'01'.$k[1];
for($i=0;$i<$numCt;$i++) $rs[$j] .= $find[$i] ? $numArr[$i] . " " : '';
$j++;
}
return $rs;
}
$a = range(1,9);
print_r(combination($a,4));