#P1950. Dessert

Dessert

题目描述:

农夫约翰针对奶牛排队就餐制定了一条新规则。不仅NN (3N153 \leq N \leq 15)头奶牛必须按顺序排队就餐,而且它们必须在每两头奶牛之间放置一张餐巾纸,餐巾纸上标有 +”、“”或“.“+”、“-” 或 “.”。为了能吃到甜点,奶牛的编号和餐巾纸上的符号必须组成一个计算结果为 00 的数值表达式。标有 .“.” 的餐巾纸能让奶牛组成更大的数字。以下是一个针对七头奶牛的等式示例:

1 - 2 . 3 - 4 . 5 + 6 . 7

这意味着算式为 12345+671 - 23 - 45 + 67,其计算结果为 00。你的任务是帮助奶牛们吃到甜点。(注意:10.11“…… 10 . 11 ……” 在计算时会将数字组合成 10111011 来进行运算。)

输入:

输入一行,包含一个单独的整数NN

输出:

对于前 2020 个可能的表达式,每行输出一个表达式,然后再输出一行,包含一个单独的整数,表示所有可能答案的总数。每个表达式行的一般格式为数字、空格、餐巾纸上的符号、空格、数字、空格、餐巾纸上的符号,依此类推。输出的顺序按照字典序排列,+“+” 排在 “-” 之前,“-” 排在 .“.” 之前。如果能形成的表达式少于 2020 个,则输出所有的表达式。

输入数据1

7

输出数据1

1 + 2 - 3 + 4 - 5 - 6 + 7
1 + 2 - 3 - 4 + 5 + 6 - 7
1 - 2 + 3 + 4 - 5 + 6 - 7
1 - 2 - 3 - 4 - 5 + 6 + 7
1 - 2 . 3 + 4 + 5 + 6 + 7
1 - 2 . 3 - 4 . 5 + 6 . 7
6

来源:

美国计算机奥林匹克竞赛(USACO)2002 年 2 月赛