全WA 求助
查看原帖
全WA 求助
780757
SY_Nightmare楼主2023/8/31 20:25
#include<bits/stdc++.h>
using namespace std;
bool flag[1000][2000];
char ans[1000][2000];
int k,p;
int n=0,m=0;
void DFS(int x,int y,int a,int b,int k,int x2,int y2)
{
	if(x==n)
	{
		ans[x][y]='o';
		return;
	}
	if(k==1)
	{
		ans[x][y]='o';
		int Left=x2+1;
		int Right=(y2-1)*2+1;
		if(flag[Left][Right]==0) DFS(x+1,y-1,a+1,b,2,Left,Right);
		Left=x2+1;
		Right=y2*2;
		if(flag[Left][Right]==0) DFS(x+1,y+1,a+1,b,3,Left,Right);
	}
	else if(k==2)
	{
		ans[x][y]='/';
		if(a*2==b) DFS(x+1,y-1,1,a,1,x2,y2);
		else DFS(x+1,y-1,a+1,b,2,x2,y2);
	}
	else if(k==3)
	{
		ans[x][y]=92;
		if(a*2==b) DFS(x+1,y+1,1,a,1,x2,y2);
		else DFS(x+1,y+1,a+1,b,3,x2,y2);
	}
}
void draw(int k)
{
	n=3;
	for(int i=3;i<=k;i++) n*=2;
	m=6*(1<<(k-2))-1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++) ans[i][j]=' ';
	DFS(1,m/2,1,n,1,1,1);
}
int main()
{
	 scanf("%d %d",&k,&p);
	 for(int i=1;i<=p;i++)
	 {
	 	int x,y;
	 	scanf("%d %d",&x,&y);
	 	flag[x][y]=true;
	 } 
	 if(k==1)
	 {
	 	n=m=1;
	 	ans[1][1]='o';
	 }
	 else draw(k);
	 for(int i=1;i<=n;i++)
	 {
	 	for(int j=1;j<=m;j++) cout<<ans[i][j];
		cout<<endl;	 	
	 }
	 return 0;
} 
2023/8/31 20:25
加载中...