Вызов
Задача состоит в том, чтобы написать код, который принимает положительное целое число n в качестве входных данных и отображает все возможные способы записи чисел от 1 до n с положительным или отрицательным знаком между ними, так что их сумма равна равно нулю. Пожалуйста, помните, что вы можете использовать только сложение или вычитание.
Например, если введено 3, то есть 2 способа сделать сумму 0:
1+2-3=0
-1-2+3=0
Обратите внимание, что числа расположены по порядку, начиная с 1 до n (в данном случае это 3). Как видно из примера, знак первого числа также может быть отрицательным, поэтому будьте осторожны.
Теперь 3 было довольно просто. Давайте перечислим все способы, когда мы рассмотрим число 7.
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
Итак, у нас есть 8 возможных способов.
Вход и выход
Как указывалось ранее, входное значение будет положительным целым числом . Ваш вывод должен содержать все возможные способы, которыми числа дают сумму нуля. В случае, если нет возможности сделать то же самое, вы можете вывести все что угодно .
Также вы можете распечатать вывод в любом формате, который вам нравится . Но это должно быть понятно . Например, вы можете распечатать его как в примере выше. Или вы можете просто распечатать знаки чисел по порядку. В противном случае вы также можете вывести «0» и «1» по порядку, где «0» будет отображать отрицательный знак, а «1» будет отображать положительный знак (или наоборот).
Например, вы можете представить 1 + 2-3 = 0, используя:
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
Однако я бы порекомендовал использовать любой из первых трех форматов для простоты. Вы можете считать все входные данные действительными.
Примеры
7 ->
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
4 ->
1-2-3+4=0
-1+2+3-4=0
2 -> -
8 ->
1+2+3+4-5-6-7+8=0
1+2+3-4+5-6+7-8=0
1+2-3+4+5+6-7-8=0
1+2-3-4-5-6+7+8=0
1-2+3-4-5+6-7+8=0
1-2-3+4+5-6-7+8=0
1-2-3+4-5+6+7-8=0
-1+2+3-4+5-6-7+8=0
-1+2+3-4-5+6+7-8=0
-1+2-3+4+5-6+7-8=0
-1-2+3+4+5+6-7-8=0
-1-2+3-4-5-6+7+8=0
-1-2-3+4-5+6-7+8=0
-1-2-3-4+5+6+7-8=0
счет
Это код-гольф , поэтому выигрывает самый короткий код!
+
как N
и -
как -N
, или это заходит слишком далеко? (например 3
-> [[-3,-3,3], [3,3,-3]]
)
0
и 1
вариант, но с использованием N
и -N
(см. Мое редактирование выше)