detor @ 2022-07-19 20:07:56
#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;
}
by _cyh0412_ @ 2022-07-19 20:19:54
。。。。。。
建议你别做这一题了,先做别的吧
by detor @ 2022-07-19 20:28:15
@cyh0412 改改好像就行了
by detor @ 2022-07-20 08:36:12
ding