美文网首页
求一个数组的全排列

求一个数组的全排列

作者: 我有一只碗 | 来源:发表于2018-03-25 12:46 被阅读0次

求数组的全排列算一个十分简单且常见的问题,可以用递归简单的实现。

输入:
[1, 2, 3]
输出:
[1 2 3]
[1 3 2]
[2 1 3]
[2 3 1]
[3 2 1]
[3 1 2]

算法思路:
首先固定第一个元素,然后进行剩余元素的全排列。
例如[1, 2, 3],首先固定1,然后进行[2, 3]的全排列。
然后固定2,然后进行[3]的全排列。
当需要排列的数组只有一个元素的时候就完成了一个。
这里完成的是[1, 2, 3]
下一步就是固定[2, 3]这个序列中的3,然后进行[2]的全排列。
完成了[1, 3, 2]
再接下来固定[1, 2, 3]中的2, 进行[1, 3]的全排列。
...


代码如下:

func combination(arr []int, first, end int) {
    // 只剩下了一个元素
    // 就得到了一组排列
    if first == end {
        fmt.Println(arr)
    } else {
        // 依次交换每一个元素到第一个位置
        for i := first; i <= end; i++ {
            arr[first], arr[i] = arr[i], arr[first]
            combination(arr, first+1, end)
            // 交换回来
            arr[first], arr[i] = arr[i], arr[first]
        }
    }
}

相关文章

  • 46. Permutations 全排列

    题目 给定一个不重复数组 nums ,返回所有可能的排列组合。可以以任意顺序返回。 解析 求一个数组的全排列,即是...

  • Permutations

    求一个数组的全排列。 遇到的问题: 1.忘记了字典序排列的定义;2.思考时间过长;3.没有及时找到全排列和字典序之...

  • iOS-数组的全排列

    百度百科链接 - 全排列 序言 数组的全排列可用于求解八皇后问题。与此同时,全排列经常会出现在笔试或者面试,如求字...

  • 全排列

    给定一个无重复数字的array,求这个数组的全排列https://leetcode.com/problems/pe...

  • 求一个数组的全排列

    求数组的全排列算一个十分简单且常见的问题,可以用递归简单的实现。 输入:[1, 2, 3]输出:[1 2 3][1...

  • 46. Permutations

    算法 1: 递归数组 的全排列,等价于全排列与可能的取值组合得到。 算法 2: 计算一个排列 按字典升序排列的紧...

  • 数组全排列

    递归实现 库函数实现 获取所有元素的全排列:itertools.permutation(lst, n) ——n:...

  • ARTS w03- 求一个数组的全排列组合

    Algorithm 求一个数组的全排列组合。例子: 代码: 这是递归的实现。先交换最后的两个元素,然后不断向前递归...

  • 输出数组的全排列

    思想: n 个元素数组全排列 = 第 1 个前缀 + 后 n - 1 个元素全排列 输出第 k 个元素之后的全排列...

  • 【JS算法】回溯算法

    题目:全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列输入:nums = [1,2,3] ...

网友评论

      本文标题:求一个数组的全排列

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