救救孩子吧,找了半晚上了,全wa,过不了样例
查看原帖
救救孩子吧,找了半晚上了,全wa,过不了样例
382048
detor楼主2022/7/19 20:07
#include<bits/stdc++.h>
using namespace std;
int n,x,y,a[1030][1030],t;
void f(int p,int k1,int k2,int x,int y){
	int m=p/2;
	int xx=k1;
	int yy=k2;
	int xt=m+xx;
	int yt=m+yy;
	a[xt-1][yt-1]=1;
	a[xt][yt-1]=1;
	a[xt-1][yt]=1;
	a[xt][yt]=1;
	if(p>=2){
	if(x<=xt&&y<=yt){
		cout<<xt<<' '<<yt<<' '<<1<<endl;
		if(xt-1!=x&&yt-1!=y)a[xt-1][yt-1]=0;
		f(m,xx,yy,x,y);
		f(m,xx,yt,xt-1,yt);
		f(m,xt,yy,xt,yt-1);
		f(m,xt,yt,xt,yt);
	}
	if(x>xt&&y<=yt){
		cout<<xt<<' '<<yt-1<<' '<<2<<endl;
		if(xt-1!=x&&yt!=y)a[xt-1][yt]=0;
		f(m,xx,yy,xt-1,yt-1);
		f(m,xx,yt,x,y);
		f(m,xt,yy,xt,yt-1);
		f(m,xt,yt,xt,yt);
	}
	if(x<=xt&&y>yt){
		cout<<xt-1<<' '<<yt<<' '<<3<<endl;
		if(xt!=x&&yt-1!=y)a[xt][yt-1]=0;
		f(m,xx,yy,xt-1,yt-1);
		f(m,xx,yt,xt-1,yt);
		f(m,xt,yy,x,y);
		f(m,xt,yt,xt,yt);
	}
	if(x>xt&&y>yt){
		cout<<xt-1<<' '<<yt-1<<' '<<4<<endl;
		if(xt!=x&&yt!=y)a[xt][yt]=0;
		f(m,xx,yy,xt-1,yt-1);
		f(m,xx,yt,xt-1,yt);
		f(m,xt,yy,xt,yt-1);
		f(m,xt,yt,x,y);
	}
	}else{
//		if(a[xx][yy]==1)cout<<xx+1<<' '<<yy+1<<' '<<3;
//		else if(a[xx+1][yy+1]==1)cout<<xx<<' '<<yy<<' '<<4;
//		else if(a[xx+1][yy]==1)cout<<xx<<' '<<yy+1<<' '<<2;
//		else cout<<xx<<' '<<xx+1<<' '<<yy<<' '<<1;
//		cout<<endl;
//		a[xx][yy]=a[xx+1][yy]=a[xx][yy+1]=a[xx+1][yy+1]=1;
		return;
	}
	
	
}
int main(){
	cin>>n>>x>>y;
	a[x][y]=1;
	t=pow(2,n);
	f(t,1,1,x,y);
	//t矩阵规模,1,1是左上角,x,y是铺过的
	return 0;
}
2022/7/19 20:07
加载中...