美文网首页
排列组合问题

排列组合问题

作者: guijianshi | 来源:发表于2018-03-15 09:49 被阅读0次

排列组合问题

今天同事问了我一个问题,给定随机几个数字(不重复),列出其所有排列组合可能.
这个问题看似很简单,毕竟排列组合大家都学过,都知道总可能数为n!,可是要想列出所有可能,似乎就没那么轻松了.
经过一个午饭时间的思考,终于想除了一个比较low的解决方法

问题分析

略,有空再补上

代码示例

Talk is cheap, show you my code!

<?php
class Permutation
{
    public $result = [];

    /**
     * 生成排列组合
     * @param array $in_arr 待排数字
     * @param array $out_arr 已排数字
     */
    public function generateArray($in_arr, $out_arr = [])
    {
        $len = count($in_arr);
        if ($len == 1) { // 输入集只有一个,则取完数据
            $this->result[] = array_merge($out_arr, [$in_arr[0]]); // 生成的排列组合储存

        }
        for ($i = 0; $i < $len; $i++) {
            $tem = array_merge($out_arr, [$in_arr[$i]]); // 将取出数字放入结果集
            $this->getArray(unsetI($in_arr, $i), $tem); // 递归取出下一结果集
        }
    }

}

/**
 * 删除索引为i的值且重排索引
 * @param $arr
 * @param $i
 * @return array
 */
function unsetI($arr, $i)
{
    unset($arr[$i]);
    return array_values($arr);
}


/*---------测试代码--------------*/
$class = new Permutation();
$class->generateArray([1, 2, 3, 4]);
echo "总共:" . count($class->result) , PHP_EOL;
pr($class->result);

function pr($arr)
{
    foreach ($arr as $item) {
        foreach ($item as $value) {
            echo $value;
        }
        echo PHP_EOL;
    }
}

输出

总共:24
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321

最后的话

以上代码仅是个人解法,希望诸位能够在评论区列出自己的解法或者思路供笔者参考.

相关文章

  • 排列组合问题

    排列组合问题 今天同事问了我一个问题,给定随机几个数字(不重复),列出其所有排列组合可能.这个问题看似很简单,毕竟...

  • 排列组合问题

    题目 给出一个二维数组,得到所有想要结果的二维数组。比如: 希望得到的结果 再比如: 希望得到的结果: 我的算法:...

  • 排列组合问题

    为什么要写这篇文章 排列组合问题在数学中占有重要的地位,其与概率论也有密切的关系。而且排列组合问题大量出现在求职笔...

  • 排列组合问题

    4个不同小球放进不同盒子有多少种放法。4的4次256 4个相同小球放进不同盒子有多少种放法。35 4个不同小球放进...

  • 第7节:行程、排列组合问题

    1、行程问题 2、排列组合 排列 组合 分类问题,加法 分步问题,乘法

  • LeetCode之Count Sorted Vowel Stri

    问题: 方法:两种解法,一种是DP如下方代码所示;另外一种是排列组合,推导出排列组合公式。 有问题随时沟通 具体代...

  • PHP 排列组合问题

    如$arr=[2,3,4]; 那么它的结果就应该是[2,23,234,24,3,34,4]七种结果 有什么好的方法得到吗

  • MATLAB 排列组合问题

    毕设ing, 最近每天除了看论文就是matlab仿真。 MATLAB编程强调"vectorization'',对矩...

  • 2019-03-13

    言语表达 数学运算 计算问题、行程问题、工程问题、几何问题、排列组合、概率问题、容斥问题、 利润问题、极值问题、浓...

  • Python实现字符串排序(包含了排列组合问题)

    用递归的方式解决排列组合问题 def zuhe(ss,res,path): if ss == '': ...

网友评论

      本文标题:排列组合问题

      本文链接:https://www.haomeiwen.com/subject/ajgfqftx.html