• 全排列


    全排列问题可以用递归解决。假设我们要对1,2,3,4四个数进行全排列,分四种情况:

    (a) 以 1 开头,求 2,3,4 全排列
    (b) 以 2 开头,求 1,3,4 全排列
    (c) 以 3 开头,求 1,2,4 全排列
    (d) 以 4 开头,求 1,2,3 全排列

    而对于 3 个数的全排列也可以按照这种思路递归下去

    代码如下

    def f(array):
        if len(array)==1:
            return array
        ans = []
        num = len(array)
        for i in range(num):
            sub = array[:i]+array[i+1:]
            for j in f(sub):
                if type(j)==type(1):
                    ans.append([array[i],j])
                else:
                    ans.append([array[i]]+j)
        return ans
    
    array=[1,2,3,4]
    for i in f(array):
        print(i)
    

    运行代码

    [1, 2, 3, 4]
    [1, 2, 4, 3]
    [1, 3, 2, 4]
    [1, 3, 4, 2]
    [1, 4, 2, 3]
    [1, 4, 3, 2]
    [2, 1, 3, 4]
    [2, 1, 4, 3]
    [2, 3, 1, 4]
    [2, 3, 4, 1]
    [2, 4, 1, 3]
    [2, 4, 3, 1]
    [3, 1, 2, 4]
    [3, 1, 4, 2]
    [3, 2, 1, 4]
    [3, 2, 4, 1]
    [3, 4, 1, 2]
    [3, 4, 2, 1]
    [4, 1, 2, 3]
    [4, 1, 3, 2]
    [4, 2, 1, 3]
    [4, 2, 3, 1]
    [4, 3, 1, 2]
    [4, 3, 2, 1]
    
  • 相关阅读:
    steam
    node 循序渐进
    node 常用指令 node 扩展链接
    window 常用指令
    web API
    SHAREPOINT
    div设置边框黑框显示
    sharepoint更新多行文本webparth
    sharepoint读取启用了追加功能的多行文本的历史版本记录
    JS实现多附件上传(asp.net)
  • 原文地址:https://www.cnblogs.com/bill-h/p/14312867.html
Copyright © 2020-2023  润新知