66分求调
查看原帖
66分求调
917301
xwx123456楼主2024/10/8 23:16
#include<bits/stdc++.h>
using namespace std;
int b,c,f[15]= {0,1,2},cnt=2,n,m,ans[15][1055],ans1[15],flag;
char d[805][1605];
void dfs(int x,int y,int num,int fx) {
	ans1[num]++;
	int num1=n-num+1,i=0,j=0,cnt=0;
	if(ans[num1][ans1[num]]==1) {
		if(fx==1) {
			for(i=x,j=y,cnt=1; cnt<=f[num]+1; i--,j++,cnt++)
				d[i][j]=' ';
		} else {
			for(i=x,j=y,cnt=1; cnt<=f[num]+1; i--,j--,cnt++)
				d[i][j]=' ';
		}
		return;
	}
	if(num==1)
		return;
	for(i=x+1,j=y-1,cnt=1; cnt<=f[num-1]; i++,j--,cnt++)
		d[i][j]='/';
	d[i][j]='o';
	dfs(i,j,num-1,1);
	for(i=x+1,j=y+1,cnt=1; cnt<=f[num-1]; i++,j++,cnt++)
		d[i][j]='\\';
	d[i][j]='o';
	dfs(i,j,num-1,2);
}
int main() {
	for(int i=3; i<=10; i++) {
		int sum=0;
		for(int j=1; j<i; j++)
			sum+=f[j];
		f[i]=sum+cnt;
		cnt++;
	}
	cin>>n>>m;
	for(int i=1; i<=m; i++) {
		cin>>b>>c;
		if(b==1&&c==1)
			flag=1;
		ans[b][c]=1;
	}
	if(!flag) {
		memset(d,' ',sizeof(d));
		dfs(1,f[n]+1,n,1);
		d[1][f[n]+1]='o';
		for(int i=1; i<=f[n]+1; i++) {
			for(int j=1; j<=6*pow(2,n-2)-1; j++)
				cout<<d[i][j];
			cout<<endl;
		}
	}
	return 0;
}
2024/10/8 23:16
加载中...