个数很容易求,n!/m!(n-m)!(n>m,m>0)但这里要求列出来谢谢
解决方案 »
- mysql删除数据之后又出现
- 如何让Apache支持<!--#include virtual="../include/top.htm"-->这种语法?
- mysql_close()的用法!!?
- 很弱智的数据库问题
- 从MSSSQL读出图片的问题?
- 100分求问:如何做动态生成的弹出式菜单
- form无法跳转,但是能取到值,是不是PHP。INI的设置
- PHP has encountered an Access Violation at 11C6150B(可能是什么原因造成的)
- 哪本php的书好呢?
- PHP的类中什么使用公有变量和私有成员函数?
- 请问路径中 ./ 和 ../的区别
- COMET和PHP SOCKET哪个更适合做聊天室?
m=1
1,2,3,
m=2
12,13,23,
m=3
123
m=1:1,2,3,4
m=2:12,13,14,23,24,34
m=3:123,124,134,234,
m=4:1234
composeList($arr, 2);
function composeList($from = array(), $num = 0, $to = array())
{
if(($count = count($to)) == $num)
{
echo join(',', $to) . '<br />';
return;
}
if($num < 0 || ($count == 0 && count($from) < $num))
{
echo 'Err';
return;
}
foreach($from AS $k => $v)
{
$to[] = $v;
unset($from[$k]);
composeList($from, $num, $to);
array_pop($to);
}
}
* 获得组合数
* @param $elements 可选的数
* @param $chosen 每个组合的个数
* @return $result 可生成的组合
*/
function array_combination(array $elements, $chosen)
{
$result = array();
if(count($elements)<=$chosen)return array($elements);
$elements=array_values($elements);
for ($i = 0; $i < $chosen; $i++) { $vecm[$i] = $i; }
for ($i = 0; $i < $chosen-1; $i++) { $vecb[$i] = $i; }
$vecb[$chosen - 1] = count($elements) - 1;
$rs=array();
foreach ($vecm as $key=>$v)$rs[$key]=$elements[$v];
$result[] = $rs;
$ = $chosen - 1;
while (true) {
if ($ == 0) {
$vecm[0]++;
$rs=array();
foreach ($vecm as $key=>$v)$rs[$key]=$elements[$v];
$result[] = $rs;
if ($vecm[0] == $vecb[0]) {
for ($i = 1; $i < $chosen; $i++) {
if ($vecm[$i] < $vecb[$i]) {
$ = $i;
break;
}
}
if (($i == $chosen) && ($vecm[$chosen - 1] == $vecb[$chosen - 1])) { break; }
}
} else {
$vecm[$]++;
$--;
for ($i = 0; $i <= $; $i++) {
$vecb[$i] = $vecm[$i] = $i;
}
$vecb[$] = $vecm[$ + 1] - 1;
$rs=array();
foreach ($vecm as $key=>$v)$rs[$key]=$elements[$v];
$result[] = $rs;
}
}
return $result;
}
收藏!!