# 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)