当1到9数字相加都等于20时,可以通过排列组合的方式:
-
将1到9的数字进行全排列,也就是将这9个数字按照所有的可能排列顺序都列举出来,然后对每一种排列情况计算其数字相加的和值。
-
对于每一种可能的排列情况,只需要计算其数字相加的和值是否等于20,如果等于20,在页面上输出这一组数字的排列情况。
使用 PHP 实现这个功能可以分两步进行:
- 实现全排列
可以使用 PHP 的数组函数和递归实现全排列,以下是实现代码:
function permute($arr, $temp, &$res) {
if (empty($arr)) {
$res[] = $temp;
} else {
for ($i = 0; $i < count($arr); $i++) {
$newArr = $arr;
$newTemp = $temp;
list($val) = array_splice($newArr, $i, 1);
array_push($newTemp, $val);
permute($newArr, $newTemp, $res);
}
}
}
$arr = array(1,2,3,4,5,6,7,8,9);
$res = array();
temp = array();
permute($arr, $temp, $res);
- 计算数字和值
对于得到的每一种可能排列情况,只需要使用 PHP 的求和函数 array_sum()
计算其数字相加和值,然后判断其是否等于20,如果等于20,则输出排列情况,代码如下:
foreach ($res as $item) {
if (array_sum($item) == 20) {
echo implode('-', $item) . '<br />';
}
}
示例:
假设当前的数字排列为:1 2 3,以下是具体的排列及计算过程:
-
1 2 3:1+2+3=6
-
1 3 2:1+3+2=6
-
2 1 3:2+1+3=6
-
2 3 1:2+3+1=6
-
3 1 2:3+1+2=6
-
3 2 1:3+2+1=6
如果要求数字和值为其他数值,只需要在代码中将20改为其他数值即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php通过排列组合实现1到9数字相加都等于20的方法 - Python技术站