求调
查看原帖
求调
791222
lby_commandBlock楼主2024/10/17 22:37
#include <bits/stdc++.h>
#include <windows.h>
#define endl '\n'
using namespace std;

const int N = (1 << 10) + 9;

struct out {
	int x, y, c;
};

vector<out> vec;

int n, x, y;

bool f[N][N];

void Pause() {
	system("pause");
}

void dfs(int x1, int y1, int x2, int y2) {
	printf("------------------------------------\n%d %d %d %d\n", x1, y1, x2, y2);
	system("cls");
	for (int i = 1; i <= (1 << n); i++) {
		for (int j = 1; j <= (1 << n); j++)
			cout << (f[i][j] ? '*' : '.');
		cout << endl;
	}
	Pause();
	if ((y2 - y1) * (x2 - x1) == 4) {
		printf("RUNNING!\n");
		for (int i = x1; i < x2; i++) {
			for (int j = y1; j < y2; j++) {
				if (f[i + 1][j + 1]) {
					printf("FIND!\n");
					if (i == x1 && j == y1) {
						printf("%d %d 1\n", x2, y2);
					} else if (i == x1 && j == y1 + 1) {
						printf("%d %d 2\n", x1 + 2, y1 + 1);
					} else if (i == x1 + 1 && j == y1) {
						printf("%d %d 3\n", x1 + 1, y2);
					} else if (i == x1 + 1 && j == y1 + 1) {
						printf("%d %d 4\n", x1 + 1, y1 + 1);
					}
					f[x1 + 1][y1 + 1] = true;
					f[x1 + 1][y2] = true;
					f[x2][y1 + 1] = true;
					f[x2][y2] = true;
					return;
				}
			}
		}
	}
	int cx = (x1 + x2) >> 1;
	int cy = (y1 + y2) >> 1;
	int x, y;
	for (int i = x1 + 1; i <= x2; i++) {
		for (int j = y1 + 1; j <= y2; j++) {
			if (f[i][j]) {
				x = i;
				y = j;
				printf("I FIND! x:%d,y:%d;(x1,x2):(%d,%d);(y1,y2):(%d,%d)\n", x, y, x1, x2, y1, y2);
				Pause();
				break;

			}
		}
	}
	int fx = 0;
	if (x < cx && y < cy)
		fx = 1; //左上
	if (x < cx && y >= cy)
		fx = 2; //右上
	if (x >= cx && y < cy)
		fx = 3; //左下
	if (x >= cx && y >= cy)
		fx = 4; //右下
	if (fx == 1) {
		f[cx + 1][cy + 1] = true;
		f[cx + 1][cy] = true;
		f[cx][cy + 1] = true;
		printf("%d %d 1\n", cx + 1, cy + 1);
	} else if (fx == 2) {
		f[cx + 1][cy + 1] = true;
		f[cx + 1][cy] = true;
		f[cx][cy] = true;
		printf("%d %d 2\n", cx + 1, cy);
	} else if (fx == 3) {
		f[cx + 1][cy + 1] = true;
		f[cx][cy] = true;
		f[cx][cy + 1] = true;
		printf("%d %d 3\n", cx, cy + 1);
	} else {
		f[cx][cy] = true;
		f[cx + 1][cy] = true;
		f[cx][cy + 1] = true;
		printf("%d %d 4\n", cx, cy);
	}
	printf("更深——————\n");
	Pause();
	dfs(x1, y1, cx, cy);
	dfs(x1, cy, cx, y2);
	dfs(cx, y1, x2, cy);
	dfs(cx, cy, x2, y2);
	printf("回来——————\n");
	Pause();
}

int main() {
	cin >> n >> x >> y;
	f[x][y] = true;
	dfs(0, 0, 1 << n, 1 << n);
	return 0;
}

54分,已加调试信息

2024/10/17 22:37
加载中...