The Second Step of AK ACM/ICPC
背景
每位 \( \text{巨佬} \) AK ICPC 的第二步。
子集生成问题
描述
给定一个由单个字符组成的集合,请求出该集合的所有子集。
保证集合本身没有重复的元素。
规定:
1. 空集( \( \varnothing \) )是任何集合的子集(也就是说输出的第一行一定是一个换行)
2. 任何一个集合是它本身的子集
3. 子集不能重复,如{2,b}和{b,2}应认作集合{2,1,b}的同一个子集,并且元素按下标排列(也就是说只输出{2,b}而不输出{b,2})
4. 子集按字典序排列,如{1,b}应比{2,b}早输出
例子:
对于集合{b,+,a,9},子集有:
{}
{b}
{b,+}
{b,a}
{b,9}
{b,a,9}
{b,+,a}
{b,+,9}
{b,+,a,9}
{+}
{+,a}
{+,9}
{+,a,9}
{a}
{a,9}
{9}
按字典序(即ASCII码的顺序)排列后为:
{}
{+}
{+,9}
{+,a}
{+,a,9}
{9}
{a}
{a,9}
{b}
{b,+}
{b,+,9}
{b,+,a}
{b,+,a,9}
{b,9}
{b,a}
{b,a,9}
输出时不需要加大括号和逗号!
数据格式
Input
第一行一个正整数 \( n \) ,表示集合中元素的数量(也就是字符串的长度)。
第二行一个字符串,描述这个集合,每个字符是集合的一个元素。
Output
多行,每行一个字符串(第一行为空),表示集合的一个子集。
数据样例
Input Simple
4
b+a9
Output Simple
+
+9
+a
+a9
9
a
a9
b
b+
b+9
b+a
b+a9
b9
ba
ba9
说明
\( n<=15 \)
推荐使用string储存答案。
限制
time:1s
memory:128Mb