题目链接:传送门
题目思路:打眼一看,递归题目(看看数据范围很合适,比较小)。就是找出各个三角形的顶点规律。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
char a[1000][1000];
int n;
void dfs(int step,int x,int y){
//cout<<x<<" "<<y<<endl;
if(x<=0)return ;
if(y<=0)return ;
if(step==1){
a[x][y]='/';
a[x][y+1]='\\';
a[x+1][y-1]='/';
a[x+1][y]='_';
a[x+1][y+1]='_';
a[x+1][y+2]='\\';
return ;
}
//三角形之间的联系
dfs(step-1,x,y);
dfs(step-1,x+pow(2,step-1),y-pow(2,step-1));
dfs(step-1,x+pow(2,step-1),y+pow(2,step-1));
return ;
}
int main(){
//初始化,否则ascii码是0,而不是32
memset(a,32,sizeof(a));
cin>>n;
dfs(n,1,pow(2,n));//起始点
for(int i=1;i<=pow(2,n);i++){
for(int j=1;j<=pow(2,n+1);j++){
printf("%c",a[i][j]);
}
printf("\n");
}
return 0;
}