求助
查看原帖
求助
82213
defense楼主2020/8/27 21:45

蒟蒻爆零求助/dk

#include<bits/stdc++.h>
using namespace std;
#define MAX 1025
int k, x, y;
int mp[MAX][MAX];
int d1[5], d2[5];
bool vis[MAX][MAX];
void give(int xx, int yy){
	d1[1] = xx; d2[1] = yy;
	d1[2] = xx + 1; d2[2] = yy;
	d1[3] = xx; d2[3] = yy - 1;
	d1[4] = xx + 1; d2[4] = yy - 1;
}

void dg(int x1, int y1, int x2, int y2, int len){
	int xx =  (x1 + x2)/2, yy = (y1 + y2)/2;
	give(xx, yy);
    if(len == 0){
		return;
    }
	len >>= 1;	
	dg(x1, y1, xx, yy, len); dg(xx, y1, x2, yy, len); dg(x1, yy, xx, y2, len); dg(xx, yy, x2, y2, len);
	for(int i = 1; i <= 4; i++){
		if(mp[d1[i]][d2[i]] != 0 ){
			for(int j = 1; j <= 4; j++){
				if(j == i) continue;
				mp[d1[j]][d2[j]] = i;
			}
			printf("%d %d %d\n", d1[5 - i], d2[5 - i], i);
			break;
		}
	} 
	
	return;
}
int main(){
	scanf("%d%d%d",&k, &x, &y);
	mp[x][y] = 1;
	dg(0, 0, (1 << k), (1 << k), (1 << k));
	return 0;
} 
2020/8/27 21:45
加载中...