Py3 排列组合

Powered by:AB_IN 局外人

排列

P1339: 排列

it.permutations(可迭代对象,取出来的元素个数)第二个参数不填,那么就是全排列。
这个题的4个数都是不一样的。
菜鸡写的这个,可以不止4个数。

def f(x):
    if x==1:
        return 1
    else:
        return f(x-1)*x
import itertools as it
n=int(input())
while n>0:
    n-=1
    s=input().split()
    ans=f(len(s)-1)
    lst=list(it.permutations(s))#返回一个二维的全排列列表
    lst.sort()#排序
    for i in range(len(lst)):
        if i%ans==0 and i!=0:
            print()
        print("".join(lst[i]),end=" ")
    print();print()

P1328: 字符排列问题

用函数。比如aacc,电脑是不会去重的(认为每个元素都不一样),会出现四个aacc。
这个题每个数可能一样。

import itertools as it
input();n=list(input())
print(len(set(it.permutations(n))))

不用函数。

def f(x):
    if x==1:
        return 1
    else:
        return f(x-1)*x
n=int(input())
s=input();ans=1;a=set(s)
for i in a:
    ans*=f(s.count(i))
print(int(f(n)/ans))

组合

it.combinations(可迭代对象,取出来的元素个数)
如:

import itertools as it
n=[1,2,3,4]
print(list(it.combinations(n,2)))
#[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

完结。

猜你喜欢

转载自blog.csdn.net/qq_45859188/article/details/106439641