大佬们愿意帮忙吗,89,一个WA了
查看原帖
大佬们愿意帮忙吗,89,一个WA了
261201
_13858886080楼主2022/7/6 20:22
#include<bits/stdc++.h>
using namespace std;
struct data{
	int z,x;
}d[100];
bool qiuqiu(data q,data w){
	return q.z<w.z||q.z==w.z&&q.x<w.x;
}
int a,s;
bool f[20][5001];
char g[5000][5000];
int p[1000001][2],t,w,e;
void qoiqoi(int l,int m,int n,int b){
	if(l==a){g[3<<(a-2)][m]='o';return;}
	if(l==a-1){
		g[(3<<(a-2))-2][(m+n)/2]='o';
		if(f[l+1][b*2-1]==true){
			g[(3<<(a-2))-1][(m+n)/2-1]='/';
			qoiqoi(l+1,m,m,b*2-1);
		}
		if(f[l+1][b*2]==true){
			g[(3<<(a-2))-1][(m+n)/2+1]='\\';
			qoiqoi(l+1,n,n,b*2);
		}
		return;
	}
	g[(3<<(a-2))-(3<<(a-l-1))+1][(m+n)/2]='o';
	if(f[l+1][b*2-1]==true){
		for(int i=1;i<=((m+n)/2-1-m)/2;i++)g[(3<<(a-2))-(3<<(a-l-1))+1+i][(m+n)/2-i]='/';
		qoiqoi(l+1,m,(m+n)/2-1,b*2-1);
	}
	if(f[l+1][b*2]==true){
		for(int i=1;i<=(n-(m+n)/2-1)/2;i++)g[(3<<(a-2))-(3<<(a-l-1))+1+i][(m+n)/2+i]='\\';
		qoiqoi(l+1,(m+n)/2+1,n,b*2);
	}
	return;
}
int main(){
	cin>>a>>s;
	for(int i=1;i<=s;i++)cin>>d[i].z>>d[i].x;
	sort(d+1,d+s+1,qiuqiu);
	f[1][1]=true;p[1][0]=1;p[1][1]=1;
	t=w=e=1;
	while(t<=w){
		if(e<=s&&p[t][0]==d[e].z&&p[t][1]==d[e].x){
			f[p[t][0]][p[t][1]]=false;
			e++;
		}
		else if(p[t][0]<=a){
			f[p[t][0]+1][p[t][1]*2-1]=true;
			f[p[t][0]+1][p[t][1]*2]=true;
			p[++w][0]=p[t][0]+1;p[w][1]=p[t][1]*2-1;
			p[++w][0]=p[t][0]+1;p[w][1]=p[t][1]*2;
		}
		t++;
	}
	if(f[1][1]==true)qoiqoi(1,1,(3<<(a-1))-1,1);
	for(int i=1;i<=(3<<(a-2));i++){
		for(int j=1;j<=(3<<(a-1))-1;j++){
			if(g[i][j]==g[0][0])putchar(' ');
			else putchar(g[i][j]);
		}
		putchar('\n');
	}
    return 0;
}
2022/7/6 20:22
加载中...