数据范围很小,可以暴力解决问题
#include <bits/stdc++.h>
using namespace std;
char a[2050][2050];
int n;
void draw(int x,int y,int d) {
if(d==1){
a[x][y+1]='/';
a[x][y+2]='\\';
a[x+1][y]='/';
a[x+1][y+1]='_';
a[x+1][y+2]='_';
a[x+1][y+3]='\\';
return;
}
int step=1<<(d-1); // 2^(d-1)
draw(x,y+step,d-1); // 上面
draw(x+step,y,d-1); // 左下
draw(x+step,y+2*step,d-1); // 右下
}
int main(){
cin>>n;
memset(a,' ',sizeof(a));
draw(0,0,n);
int h=1<<n;
int w=1<<(n+1);
for (int i=0;i<h;i++) {
for (int j=0;j<w;j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}