如果顺序有问题怎么办(c++)(玄关)
查看原帖
如果顺序有问题怎么办(c++)(玄关)
877599
EX_EXCRSE楼主2025/1/17 11:50

rtrt 代码如下 (解析:leftup为左上,rightup为右上,leftdown为左下,rightdown为右下)

#include<bits/stdc++.h>
using namespace std;
const int N=(2 <<10 )+5;
long long k,gx,gy;
long long mp[N][N];
void fn(long long gzx,long long gzy,long long large,long long qdx,long long qdy){
	if(large==1){
		return ;
	}
	if(gzx <=qdx+(large/2)-1&&gzy <=qdy+(large/2)-1){ //leftup
		fn(gzx,gzy,large/2,qdx,qdy);//leftup
		fn(qdx+(large/2) , qdy+(large/2)-1 , large/2 , qdx+(large/2) , qdy );//rightup
		fn(qdx+(large/2)-1 , qdy+(large/2) , large/2 , qdx , qdy+(large/2));//leftdown
		fn(qdx+(large/2) , qdy+(large/2) , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
		cout<< qdx+(large/2) << " " << qdy+(large/2) << " " <<1<<endl;
	}
	if(gzx >=qdx+(large/2)&&gzy <=qdy+(large/2)-1){ //rightup
		fn(qdx+(large/2)-1 , qdy+(large/2)-1 , large/2 , qdx , qdy);//leftup
		fn(gzx , gzy , large/2 , qdx+(large/2) , qdy);//rightup
		fn(qdx+(large/2)-1 , qdy+(large/2) , large/2 , qdx , qdy+(large/2));//leftdown
		fn(qdx+(large/2) , qdy+(large/2) , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
		cout<< qdx+(large/2)-1 << " " << qdy+(large/2) << " " <<2<<endl;
	}
	if(gzx <=qdx+(large/2)-1&&gzy >=qdy+(large/2)){ //leftdown
		fn(qdx+(large/2)-1 , qdy+(large/2)-1 , large/2 , qdx , qdy);//leftup
		fn(qdx+(large/2) , qdy+(large/2)-1 , large/2 , qdx+(large/2) , qdy );//rightup
		fn(gzx , gzy , large/2 , qdx , qdy+(large/2));//leftdown
		fn(qdx+(large/2) , qdy+(large/2) , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
		cout<< qdx+(large/2) << " " << qdy+(large/2)-1 << " " <<3<<endl;
	}
	if(gzx >=qdx+(large/2)&&gzy >=qdy+(large/2)){ //rightdown
		fn(qdx+(large/2)-1 , qdy+(large/2)-1 , large/2 , qdx , qdy);//leftup
		fn(qdx+(large/2) , qdy+(large/2)-1 , large/2 , qdx+(large/2) , qdy );//rightup
		fn(qdx+(large/2)-1 , qdy+(large/2) , large/2 , qdx , qdy+(large/2));//leftdown
		fn(gzx , gzy , large/2 , qdx+(large/2) , qdy+(large/2));//rightdown
		cout<< qdx+(large/2)-1 << " " << qdy+(large/2)-1 << " " <<4<<endl;
	}
	return ;
}
int main(){
	cin>>k>>gx>>gy;
	mp[gx][gy]=1;
	fn(gx,gy,2<<(k-1),1,1);
	
	return 0;
	}

2025/1/17 11:50
加载中...