后两个点错了,求救~
查看原帖
后两个点错了,求救~
591952
xiaozhao_楼主2024/4/3 18:50
#include<bits/stdc++.h>
using namespace std;
char s[10086][10086];
bool v[18][18];
int n,m,sum=1,maw,L[18];
inline void dfs(int cnt,int d,int x){
	if(d>m){
		sum=cnt;
		return;
	}
	int t=((x<<1)-1)*(L[d]+1),l=(x<<1)-1,r=x<<1;
	if(d==m) t-=(t>>2)+(x&1),maw=max(maw,t);
	s[cnt][t]='o';
	if(!v[d+1][l]){
		for(int i=1;i<=L[d+1];i++)
			s[cnt+i][t-i]='/';
		dfs(cnt+L[d+1]+1,d+1,l);
	}
	if(!v[d+1][r]){
		for(int i=1;i<=L[d+1];i++)
			s[cnt+i][t+i]='\\';
		dfs(cnt+L[d+1]+1,d+1,r);
	}
}
int main(){
	cin>>m>>n;
	for(int i=1,x,y;i<=n;i++)
		cin>>x>>y,v[x][y]=1;
	memset(s,32,sizeof s);
	L[m]=1;
	for(int i=m-1;i>=1;i--)
		L[i]=sum+m-i,sum+=L[i];
	dfs(1,1,1);
	int maw=6*(1<<(m-1));
	for(int i=1;i<=sum+1;i++){
		for(int j=1;j<=maw;j++)
			putchar(s[i][j]);
		putchar('\n');
	}
	return 0;
}
2024/4/3 18:50
加载中...