枚举子集
题目描述
今有 n n n 位同学,可以从中选出任意名同学参加合唱。
请输出所有可能的选择方案。
输入格式
仅一行,一个正整数 n n n。
输出格式
若干行,每行表示一个选择方案。
每一种选择方案用一个字符串表示,其中第
i
i
i 位为 Y
则表示第
i
i
i 名同学参加合唱;为 N
则表示不参加。
需要以字典序输出答案。
样例 #1
样例输入 #1
3
样例输出 #1
NNN
NNY
NYN
NYY
YNN
YNY
YYN
YYY
提示
对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 10 1\leq n\leq 10 1≤n≤10。
参考全排列
#include<bits/stdc++.h>
using namespace std;
int n;//1 <= n <= 10
char path[12];
void dfs(int u)
{
if(u == n)
{
for(int i = 0;i < n;i++)
{
cout << path[i];
}
puts("");
return;
}
for(int i = 1;i <= 2;i++)
{
if(i == 1)
{
path[u] = 'N';
}
if(i == 2)
{
path[u] = 'Y';
}
dfs(u+1);
}
}
int main()
{
cin >> n;
dfs(0);
return 0;
}