php通过排列组合实现1到9数字相加都等于20的方法

当1到9数字相加都等于20时,可以通过排列组合的方式:

当1到9数字相加都等于20时,可以通过排列组合的方式:

  1. 将1到9的数字进行全排列,也就是将这9个数字按照所有的可能排列顺序都列举出来,然后对每一种排列情况计算其数字相加的和值。

  2. 对于每一种可能的排列情况,只需要计算其数字相加的和值是否等于20,如果等于20,在页面上输出这一组数字的排列情况。

使用 PHP 实现这个功能可以分两步进行:

  1. 实现全排列

可以使用 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);
  1. 计算数字和值

对于得到的每一种可能排列情况,只需要使用 PHP 的求和函数 array_sum() 计算其数字相加和值,然后判断其是否等于20,如果等于20,则输出排列情况,代码如下:

foreach ($res as $item) {
    if (array_sum($item) == 20) {
        echo implode('-', $item) . '<br />';
    }
}

示例:

假设当前的数字排列为:1 2 3,以下是具体的排列及计算过程:

  1. 1 2 3:1+2+3=6

  2. 1 3 2:1+3+2=6

  3. 2 1 3:2+1+3=6

  4. 2 3 1:2+3+1=6

  5. 3 1 2:3+1+2=6

  6. 3 2 1:3+2+1=6

如果要求数字和值为其他数值,只需要在代码中将20改为其他数值即可。

本文标题为:php通过排列组合实现1到9数字相加都等于20的方法

基础教程推荐