1. 注意dfs内,for循环的遍历,想清楚把什么赋值给a[x]
2.本题只需要把0或1赋值给a[x]所以
#include<bits/stdc++.h>
using namespace std;
int n;
int a[20];
int vis[20];
void pr() {
for (int i = 1; i <= n; i++) {
if (a[i] ==0)
cout << 'N';
else
cout << 'Y';
}
cout << endl;
}
void dfs(int x) {
if (x > n) {
pr();
return ;
}
for (int i = 0; i <= 1; i++) {
a[x] = i;
dfs(x + 1);
}
}
int main() {
cin >> n;
dfs(1);
return 0;
}