zoukankan      html  css  js  c++  java
  • 全排列

    全排列问题可以用递归解决。假设我们要对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]
    
  • 相关阅读:
    Java后台校验手机号和邮箱
    centos7安装redis
    centos7安装mysql5.7
    VUE环境运行搭建
    Oracle11gR2安装
    VisualSvn-Server搭建
    SpringCloud-Hoxton.SR1-config整合
    项目简介
    linux常用命令
    JAVA NIO
  • 原文地址:https://www.cnblogs.com/bill-h/p/14312867.html
Copyright © 2011-2022 走看看