过了样例,测试时第二个AC,其余都WR
查看原帖
过了样例,测试时第二个AC,其余都WR
1037544
mazel楼主2023/9/20 16:57
#include<iostream>
using namespace std;

#define upleft deal(a,b,a+l-1,b+l-1,l);   //左上
#define upright deal(a,a+l,a+l-1,b+l,l);   //右上
#define downleft deal(a+l,b,a+l,b+l-1,l);   //左下
#define downright deal(a+l,b+l,a+l,b+l,l);   //右下


void deal(int a,int b,int x,int y,int l)
{
	if (l == 1)return;        //递归终止条件
	l >>= 1;
	if (x - a < l && y - b < l)       //判断在左上
	{
		cout << a + l << " " << b + l << " 1" << endl;
		deal(a, b, x, y, l);
		upright
		downleft
		downright
	}
	else if (x - a < l && y - b >= l)   //判断在右上
	{
		cout << a + l << " " << b + l - 1 << " 2" << endl;
		deal(a, b + l, x, y, l);
		upleft
		downleft
		downright
	}
	else if (x - a >= l && y - b < l)   //判断在左下
	{
		cout << a + l - 1 << " " << b + l << " 3" << endl;
		deal(a + l, b, x, y, l);
		upleft
		upright
		downright
	}
	else if (x - a >= 1 && y - b >= 1)   //判断在右下
	{
		cout << a + l - 1 << " " << b + l - 1 << " 4" << endl;
		deal(a + l, b + l, x, y, l);
		upleft
		upright
		downleft
	}
}
int main()
{
	int k = 0;
	int x = 0, y = 0;
	cin >> k;
	cin >> x >> y;
	deal(1, 1, x, y, 1 << k);
	return 0;
}

2023/9/20 16:57
加载中...