• python排列组合算法


    其实和八皇后的算法差不多,八皇后不检查斜线的结果就是全排列,此外八皇后中检查皇后位置麻烦,这里只要把列表转成词典,检查一下长度就行了(有重复元素,比如到第二层,应该是1,2,如果是1,1,那么词典长度就只有1了,需要排除)

    组合就是每次取得必须是大于之前的,排列就是每次都从0开始选:

    def combination(n,c,com=1,limit=0,per=[]):
        for pos in range(limit,n):
            t = per + [pos]
            if len(set(t)) == len(t):
                if len(t) == c:
                        yield [pos,]
                else:
                        for result in combination(n,c,com,com*pos, per + [pos,]):
                                yield [pos,] + result
    print("排列:")
    for res in combination(5,3,0):
        print(res)

    print("组合:")
    for res in combination(5,3):
        print(res)

    结果:

    排列:
    [0, 1, 2]
    [0, 1, 3]
    [0, 1, 4]
    [0, 2, 1]
    [0, 2, 3]
    [0, 2, 4]
    [0, 3, 1]
    [0, 3, 2]
    [0, 3, 4]
    [0, 4, 1]
    [0, 4, 2]
    [0, 4, 3]
    [1, 0, 2]
    [1, 0, 3]
    [1, 0, 4]
    [1, 2, 0]
    [1, 2, 3]
    [1, 2, 4]
    [1, 3, 0]
    [1, 3, 2]
    [1, 3, 4]
    [1, 4, 0]
    [1, 4, 2]
    [1, 4, 3]
    [2, 0, 1]
    [2, 0, 3]
    [2, 0, 4]
    [2, 1, 0]
    [2, 1, 3]
    [2, 1, 4]
    [2, 3, 0]
    [2, 3, 1]
    [2, 3, 4]
    [2, 4, 0]
    [2, 4, 1]
    [2, 4, 3]
    [3, 0, 1]
    [3, 0, 2]
    [3, 0, 4]
    [3, 1, 0]
    [3, 1, 2]
    [3, 1, 4]
    [3, 2, 0]
    [3, 2, 1]
    [3, 2, 4]
    [3, 4, 0]
    [3, 4, 1]
    [3, 4, 2]
    [4, 0, 1]
    [4, 0, 2]
    [4, 0, 3]
    [4, 1, 0]
    [4, 1, 2]
    [4, 1, 3]
    [4, 2, 0]
    [4, 2, 1]
    [4, 2, 3]
    [4, 3, 0]
    [4, 3, 1]
    [4, 3, 2]
    组合:
    [0, 1, 2]
    [0, 1, 3]
    [0, 1, 4]
    [0, 2, 3]
    [0, 2, 4]
    [0, 3, 4]
    [1, 2, 3]
    [1, 2, 4]
    [1, 3, 4]
    [2, 3, 4]

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/nocomment/p/13098495.html
Copyright © 2020-2023  润新知