抽象代码
查看原帖
抽象代码
1198462
dvsfanjo楼主2023/12/2 09:38

啊啊啊啊啊啊啊啊啊啊啊!!!!!!!! 这抽象代码bug找不了一点啊啊啊啊! 各位神犇来help me啊!

#include <bits/stdc++.h>
using namespace std;
int a[1030][1030];
int p[11] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};
void set1(int x, int y, int m)
{
	if (m == 1) a[x][y + 1] = a[x + 1][y] = a[x + 1][y + 1] = 1;
	else if (m == 2) a[x][y - 1] = a[x + 1][y - 1] = a[x + 1][y] = 2;
	else if (m == 3) a[x - 1][y] = a[x - 1][y + 1] = a[x][y + 1] = 3;
	else if (m == 4) a[x - 1][y] = a[x - 1][y - 1] = a[x][y - 1] = 4;
	return;
}
int set2(int x, int y, int k, int a, int b)
{
	bool v1 = a < p[k - 1] + x, v2 = a >= p[k - 1] + x;
	bool v3 = b < p[k - 1] + y, v4 = b >= p[k - 1] + y;
	if (v1 && v3) {set1(p[k - 1] + x - 1, p[k - 1] + y - 1, 1); return 1;}
	else if (v2 && v3) {set1(p[k - 1] + x - 1, p[k - 1] + y, 2); return 2;}
	else if (v1 && v4) {set1(p[k - 1] + x, p[k - 1] + y - 1, 3); return 3;}
	else if (v2 && v4) {set1(p[k - 1] + x, p[k - 1] + y, 4); return 4;}
}
void f(int x, int y, int k, int a, int b)
{
	if (k == 1)
	{
		if (a == x && b == y) set1(a, b, 1);
		else if (a == x + 1 && b == y) set1(a, b, 3);
		else if (a == x && b == y + 1) set1(a, b, 2);
		else if (a == x + 1 && b == y + 1) set1(a, b, 4);
		return;
	}
	int u = set2(x, y, k, a, b), la[4], lb[4];
	la[0] = p[k - 1] + x - 1, la[1] = p[k - 1] + x - 1, la[2] = p[k - 1] + x, la[3] = p[k - 1] + x;
	lb[0] = p[k - 1] + y - 1, lb[1] = p[k - 1] + y, lb[2] = p[k - 1] + y - 1, lb[3] = p[k - 1] + y;
	if (u == 1)
	{
		la[0] = a, lb[0] = b;
	}
	else if (u == 2)
	{
		la[1] = a, lb[1] = b;
	}
	else if (u == 3)
	{
		la[2] = a, lb[2] = b;
	}
	else if (u == 4)
	{
		la[3] = a, lb[3] = b;
	}
	f(x, y, k - 1, la[0], lb[0]);
	f(p[k - 1] + x, y, k - 1, la[1], lb[1]);
	f(x, p[k - 1] + y, k - 1, la[2], lb[2]);
	f(p[k - 1] + x, p[k - 1] + y, k - 1, la[3], lb[3]);
	return;
}
int main()
{
	int n, i, j;
	cin >> n >> i >> j;
	a[i][j] = 9; 
	f(1, 1, n, i, j); 
	for (int i = 1; i <= p[n]; i++)
	{
		for (int j = 1; j <= p[n]; j++)
		{
			cout << a[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

这只是调试代码,输出填补完后的地毯,用9代替公主位,要死啦!!!!!

2023/12/2 09:38
加载中...