70分求助,WA了最后三个点
查看原帖
70分求助,WA了最后三个点
34509
雷葑楼主2020/12/2 16:49
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <ctime>
using namespace std;
#define LL long long
#define N 2010

int n,m,w,h;char map[N][N];bool e[15][30];

inline void read(int &a){a=0;bool f=false;char ch;
	while (!(((ch=getchar())>='0'&&ch<='9')||ch=='-'));
	if (ch=='-') f=true;else a=ch-'0';
	while ((ch=getchar())>='0'&&ch<='9') a=(a<<3)+(a<<1)+ch-'0';
	if (f) a=-a;
}

void DFS(int he,int wi,int H,int cur){
	map[H][cur]='o';if (he==n)return;
	
	if (!e[he+1][(wi<<1)-1]){int a=(1<<n-he);if (n-he-2>=0) a-=(1<<n-he-2);
		for(int i=1;i<a;i++) map[H+i][cur-i]='/';
		DFS(he+1,(wi<<1)-1,H+a,cur-a);
	}
	if (!e[he+1][wi<<1]){int a=(1<<n-he);if (n-he-2>=0) a-=(1<<n-he-2);
		for(int i=1;i<a;i++) map[H+i][cur+i]='\\';
		DFS(he+1,wi<<1,H+a,cur+a);
	}
}

int main(){int a,b;

	cin>>n>>m,h=(1<<n-1)+(1<<n-2),w=(1<<n-1)+(1<<n)-1;
	memset(map,' ',sizeof(map));
	for (int i=1;i<=m;i++){
		cin>>a>>b,e[a][b]=1;
	}
	if (e[1][1]) return 0;
	DFS(1,1,1,(w>>1)+1);
	for (int i=1;i<=h;i++){
		for (int j=1;j<=w;j++)printf ("%c",map[i][j]);
		printf ("\n");
	}
	return 0;
}
2020/12/2 16:49
加载中...