文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>排列组合

排列组合

时间:2008-11-14  来源:jiangerji

求出s个元素中n个的所有排列情况P(s, n)
比如0,1,2的所有排列情况为012, 021, 102, 120, 201, 210,共6种情况
    
def permutation(s, n):
    #从s中选取n进行排列
    if (n > len(s)) or (n <= 0) or (len(s) == 0):
        return
       
    if n == 1:
        for i in range(len(s)):
            yield [s[i]]
    else:
        for i in s:
            #print i, len(s), r
            st = list(s)
            st.remove(i)
            for j in permutation(st, n-1):
                yield [i] + j

其中yield是python的生成器。

获取组合的代码为
    
def combination(s, n):
    if (n > len(s)) or (n <= 0) or (len(s) == 0):
        return
    if n == 1:
        for i in s:
            yield [i]
    else:
        for i in range(len(s)):
            for j in combination(s[i+1:], n-1):
                yield [s[i]]+j

排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载