0tpsT^T(调了60多遍(本地))
查看原帖
0tpsT^T(调了60多遍(本地))
1374261
gaohongyuan楼主2025/1/11 11:39
#include<bits/stdc++.h>
using namespace std;

void f(int n,int x,int y,int dx,int dy)
{
    int t=n/2;
    if(n==1)return;
    if(x<=t&&y<=t)
    {
        printf("%d %d 1\n",dx+t,dy+t);
        f(t,x,y,dx,dy);
        f(t,1,t,dx,dy+t);
        f(t,1,1,dx+t,dy+t);
        f(t,t,1,dx+t,dy);
    }
    else if(x>t&&y<=t)
    {
        printf("%d %d 2\n",dx+t,dy+t-1);
        f(t,x,y-t,dx+t,dy);
        f(t,t,t,dx,dy);
        f(t,1,t,dx,dy+t);
        f(t,1,1,dx+t,dy+t);
    }
    else if(x<=t&&y>t)
    {
        printf("%d %d 3\n",dx+t-1,dy+t);
        f(t,x,y-t,dx,dy+t);
        f(t,t,t,dx,dy);
        f(t,t,1,dx+t,dy);
        f(t,1,1,dx+t,dy+t);
    }
    else
    {
        printf("%d %d 4\n",dx+t-1,dy+t-1);
        f(t,x-t,y-t,dx+t,dy+t);
        f(t,t,t,dx,dy);
        f(t,1,t,dx,dy+t);
        f(t,t,1,dx+t,dy);
    }
}

int main()
{
    int k,x,y,t=1;
	cin>>k>>x>>y;
	t=1<<k;
	f(t,x,y,1,1);
    return 0;
}
2025/1/11 11:39
加载中...