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';elsecout << '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;
}