rt,只 A 了 #1~3,其他全 WA。
code:
#include<bits/stdc++.h>
using namespace std;
int m,n,dep=1,a[2005];
char ans[2005][2005];
void del(int x)
{
a[x<<1]=0;
a[x<<1|1]=0;
if(x<=(1<<m-1))
{
del(x<<1);
del(x<<1|1);
}
}
void sol(int x,int sp_lr=3,int sp_rl=1)
{
int h=0;
for(int i=1;i<dep;i++)
{
ans[dep][h+i]=' ';
}
h+=dep;
if(x==0)
{
ans[dep][h]='o';
return;
}
for(int i=1;i<=x;i++)
{
ans[dep][h]='o';
for(int j=1;j<=sp_lr;j++)
{
ans[dep][h+j]=' ';
}
ans[dep][h+sp_lr+1]='o';
for(int j=1;j<=sp_rl;j++)
{
ans[dep][h+sp_lr+1+j]=' ';
}
h+=sp_lr+sp_rl+2;
}
dep++;
h=0;
for(int i=sp_lr-2;i>=1;i-=2)
{
for(int j=1;j<=x;j++)
{
for(int k=1;k<dep;k++)
{
ans[dep][h+k]=' ';
}
h+=dep;
ans[dep][h]='/';
for(int k=1;k<=i;k++)
{
ans[dep][h+k]=' ';
}
h+=i+1;
ans[dep][h]='\\';
for(int k=1;k<=dep;k++)
{
ans[dep][h+k]=' ';
}
h+=dep;
}
dep++;
h=0;
}
sol(x>>1,sp_lr==3?5:(sp_lr+1<<1)-1,sp_lr==3?5:(sp_lr+1<<1)-1);
}
int main()
{
cin>>m>>n;
for(int i=1;i<(1<<m);i++)
{
a[i]=1;
}
while(n--)
{
int i,j;
cin>>i>>j;
int k=(1<<i-1)+j-1;
a[k]=0;
a[k<<1]=0;
a[k<<1|1]=0;
del(k<<1);
del(k<<1|1);
}
sol(m);
int s=0;
for(int i=dep;i>=1;i--)
{
for(int j=1;j<=m*5+3;j++)
{
if(ans[i][j]=='o')
{
if(!a[++s])
{
ans[i][j]=' ';
for(int k=1;ans[i-k][j-k]!='o'&&ans[i-k][j-k]!=' '&&i-k>=1&&j-k>=1;k++)
{
ans[i-k][j-k]=' ';
}
for(int k=1;ans[i-k][j+k]!='o'&&ans[i-k][j+k]!=' '&&i-k>=1&&j+k<=m*5+3;k++)
{
ans[i-k][j+k]=' ';
}
for(int k=1;ans[i+k][j+k]!='o'&&ans[i+k][j+k]!=' '&&i+k<=dep&&j+k<=m*5+3;k++)
{
ans[i+k][j+k]=' ';
}
for(int k=1;ans[i+k][j-k]!='o'&&ans[i+k][j-k]!=' '&&i+k<=dep&&j-k>=1;k++)
{
ans[i+k][j-k]=' ';
}
}
}
}
}
for(int i=dep;i>=1;i--)
{
for(int j=1;j<=m*5+3;j++)
{
cout<<ans[i][j];
}
cout<<endl;
}
return 0;
}