rosalind练习题二十九

# Problem

# A signed permutation of length n is some ordering of the positive integers {1,2,…,n} in which each integer is then provided with either a positive or negative sign (for the sake of simplicity, we omit the positive sign). For example, π=(5,−3,−2,1,4) is a signed permutation of length 5.

# Given: A positive integer n≤6.

# Return: The total number of signed permutations of length n, followed by a list of all such permutations (you may list the signed permutations in any order).

# Sample Dataset

# 2

# Sample Output

# 8

# -1 -2

# -1 2

# 1 -2

# 1 2

# -2 -1

# -2 1

# 2 -1

# 2 1

# 返回所有符合条件的排列的总数,以及列出所有符合条件的排列。

import itertools

def signed_permutations(n):

numbers =list(range(1, n +1))

permutations =list(itertools.permutations(numbers))

total =len(permutations) * (2 ** n)

signed_permutations = []

for permutationin permutations:

for signsin itertools.product([-1, 1], repeat=n):

signed_permutation = [str(sign * number)for sign, numberin zip(signs, permutation)]

signed_permutations.append(' '.join(signed_permutation))

return total, signed_permutations

n =2

total, permutations = signed_permutations(n)

print(total)

for permutationin permutations:

print(permutation)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容