Q:

Как получить все комбинации расстановки N символов?

Необходимо получить все возможные комбинации расстановки + и - для заданной длины, например для 2 это будет ++, --, +-, -+.

A:

Если +- и -+ различаются в вашем случае, то вам не комбинации (сочетания) нужны (которые порядок не учитывают), а itertools.product() (размещение с повторениями):
>>> import itertools
>>> print(*map(''.join, itertools.combinations('+-', r=2)))
+-
>>> print(*map(''.join, itertools.combinations_with_replacement('+-', r=2)))
++ +- --
>>> print(*map(''.join, itertools.product('+-', repeat=2)))
++ +- -+ --

A:

С такой задачей отлично справляется itertools.cobinations()
Чтобы не терялись зеркальные комбинации '+-', '-+' передаем двойную строку '+-+-', а для того чтобы комбинации не повторялись используем set().
from itertools import combinations
print(set(combinations('+-'*2, 2))) 

