<?php
/**
* 排列
* @param $arr 进行排列的数组
* @param $n 排列数量
* @param $res 返回结果, 保存到引用数组中
* @param $pre 已排列的内容
*/
function a( $arr, $n, &$res, $pre = array() )
{
// 需要在count($arr)个元素中, 选择0个, 显然, $pre已选择好了, 那添加到结果数组中.
if ( $n == 0 )
{
$res[] = $pre;
} else
{
$count = count( $arr );
for ( $i = 0; $i < $count; $i ++ )
{
// 把第一个元素取出来, 然后从剩下的count($arr)-1个元素中,
// 再选择出n - 1个元素.
$temp = array_shift( $arr );
a( $arr, $n - 1, $res, array_merge( $pre, array( $temp ) ) );
// 元素放到队尾, 进行下一次选择.
array_push( $arr, $temp );
}
}
}
/**
* 组合
*/
function c( $arr, $n, &$res, $pre = array() )
{
if ( $n == 0 )
{
$res[] = $pre;
} else
{
$count = count( $arr );
for ( $i = 0; $i < $count - $n + 1; $i ++ )
{
$temp = array_shift( $arr );
c( $arr, $n - 1, $res, array_merge( $pre, array( $temp )));
}
}
}
$arr = array ( 1, 2, 3, 4, 5, 6 );
$n = 3;
a( $arr, $n, $res );
print_r( $res );
c( $arr, $n, $res );
print_r( $res );
排列组合枚举代码
最新推荐文章于 2024-08-05 14:58:10 发布
这篇博客介绍了如何使用PHP实现排列和组合的算法。通过两个函数`a()`和`c()`分别处理排列和组合问题,递归地遍历数组并选择指定数量的元素。示例代码展示了如何对一个包含1到6的数组进行3个元素的排列和组合计算,并打印出结果。
摘要由CSDN通过智能技术生成