CF44I Toys
题目描述
小玛莎很喜欢把她的玩具堆在地板上,她还讨厌别人碰她的玩具。一天,玛莎把所有 $n$ 个玩具分成了几堆,但哥哥萨沙来了,把所有堆合成了一堆。玛莎看到后很伤心,哭了起来。萨沙现在怎么哄也哄不好玛莎,而妈妈马上就要回家来处罚让玛莎哭的萨沙了。因此,他决定把玩具恢复成以前的样子。然而,萨沙一点也不记得原来玩具的分堆方式。玛莎当然记得,但她还不会说话,只能在萨沙把玩具分好后高兴地叫出来。于是萨沙不得不尝试所有可能的分堆方式,直到玛莎认出那个正确的分法。
每一堆的位置以及堆内玩具的相对顺序都无关紧要,两种分堆方式如果可以找出两个玩具,使它们在第一种分堆方式下在同一堆而在第二种分堆方式下不在同一堆,则认为这两种方式不同。萨沙想要最快地尝试所有的分堆方式,因为妈妈很快就要回来了。每次操作,萨沙可以从任意一堆里拿出一个玩具,放进任意一堆(可能产生新堆,也可能有旧堆消失)。萨沙想找出一种操作顺序,使所有的分堆方式各尝试一次且都不同。请帮助萨沙。开始时,所有玩具都在同一堆里。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 10$),表示玩具的数量。
输出格式
第一行输出所有不同的分堆方式的数量。接下来,每一行输出每一种分堆方式,按照萨沙尝试的顺序(即,每一个下一个分堆方式只能通过一次题目描述的操作从前一个状态得到)。每个分堆方式的输出要求如下:
每堆内的玩具编号应按升序排列。所有堆按照每堆第一个玩具编号的升序排列。每种方式一行,参见样例。
如果有多种满足要求的方案,输出任意一种即可。
说明/提示
由 ChatGPT 5 翻译