WA#8,#9,求调
查看原帖
WA#8,#9,求调
811289
Wangjiahuan2011楼主2024/1/14 19:17
#include<bits/stdc++.h>
using namespace std;
int m, n, z[30][30]; char s[3005][3005] = {0}; bool f[15][15];
void dfs(int x, int y){
	if(f[x][y] || x > m) return;
	s[z[1][1] - z[x][1] + 1][z[x][y]] = 'o';
	if(x != 1 || y != 1){
		if(y % 2 == 1){
			for(int nx = z[1][1] - z[x][1], ny = z[x][y] + 1; ny < z[x - 1][(y + 1) / 2]; nx--, ny++)
				s[nx][ny] = '/';
		}else{
			for(int nx = z[1][1] - z[x][1], ny = z[x][y] - 1; ny > z[x - 1][y / 2]; nx--, ny--)
				s[nx][ny] = '\\';
		}
	}dfs(x + 1, y * 2 - 1); dfs(x + 1, y * 2);
}int main(){
	scanf("%d%d", &m, &n); z[m][1] = 1; int tmp = pow(2, m - 1);
	for(int i = 2; i <= tmp; i++)
		z[m][i] = z[m][i - 1] + (i % 2 == 0 ? 4 : 2);
	for(int i = m - 1; i >= 1; i--){
		int cnt = pow(2, i - 1);
		for(int j = 1; j <= cnt; j++){
			z[i][j] = (z[i + 1][j * 2 - 1] + z[i + 1][j * 2]) / 2;
		}
	}for(int i = 1; i <= n; i++){
		int a, b; scanf("%d%d", &a, &b);
		f[a][b] = 1;
	}dfs(1, 1);
	for(int i = 1; i <= z[1][1] - z[m][1] + 1; i++){
		for(int j = 1; j <= z[m][tmp]; j++){
			if(s[i][j] == 0) printf(" ");
			else printf("%c", s[i][j]);
		}printf("\n");
	}//printf("%d\n%d %d\n%d %d %d %d", z[1][1], z[2][1], z[2][2], z[3][1], z[3][2], z[3][3], z[3][4]);
	return 0;
}
2024/1/14 19:17
加载中...