这个题目要求输出顺序了吗?我感觉我的只是顺序没对,但是也没说是什么顺序啊
查看原帖
这个题目要求输出顺序了吗?我感觉我的只是顺序没对,但是也没说是什么顺序啊
1158999
joeyzy楼主2023/12/20 22:06
#include<iostream>
using namespace std;
int k;
int x,y;

void print(int xx,int yy,int cond,int len)
{
    if(len==1) printf("%d %d %d\n",xx,yy,cond);
    else if(cond==1)
    {
        print(xx,yy,1,len/2);
        print(xx-(len/2),yy-(len/2),1,len/2);
        print(xx-len*2+1,yy,3,len/2);
        print(xx,yy-len*2+1,2,len/2);
    }
    else if(cond==2)
    {
        print(xx,yy,2,len/2);
        print(xx+(len/2),yy+(len/2),2,len/2);
        print(xx-len*2+1,yy,4,len/2);
        print(xx,yy+len*2-1,1,len/2);
    }
    else if(cond==3)
    {
        print(xx,yy,3,len/2);
        print(xx+(len/2),yy-(len/2),3,len/2);
        print(xx+len*2-1,yy,1,len/2);
        print(xx,yy-len*2+1,4,len/2);
    }
    else if(cond==4)
    {
        print(xx,yy,4,len/2);
        print(xx+(len/2),yy+(len/2),4,len/2);
        print(xx+len*2-1,yy,2,len/2);
        print(xx,yy+len*2-1,3,len/2);
    }
    return;
}

int main()
{
    scanf("%d",&k);
    scanf("%d%d",&x,&y);
    int ori=1;
    for(int i=0;i<k;i++)
    ori=ori*2;
    int qx=1;int qy=1;
    int mx=ori;int my=ori;
    while((mx-qx)>1)
    {
        ori/=2;
        if((y-qy)<ori&&(x-qx)<ori)
        {
            print(mx,my,1,ori);
            mx-=ori;my-=ori;
        }
        else if((y-qy)>=ori&&(x-qx)<ori)
        {
            print(mx,qy,2,ori);
            mx-=ori;qy+=ori;
        }
        else if((y-qy)<ori&&(x-qx)>=ori)
        {
            print(qx,my,3,ori);
            qx+=ori;my-=ori;
        }
        else if((y-qy)>=ori&&(x-qx)>=ori)
        {
            print(qx,qy,4,ori);
            qx+=ori;qy+=ori;
        }
    }
    if(mx-qx==1)
    {
        if(x==qx&&y==qy)
        {
            printf("%d %d 1",mx,my);
        }
        else if(x==mx&&y==qy)
        {
            printf("%d %d 3",qx,my);
        }
        else if(x==qx&&y==my)
        {
            printf("%d %d 2",mx,qy);
        }
        else if(x==mx&&y==my)
        {
            printf("%d %d 4",qx,qy);
        }
    }
    return 0;
}
2023/12/20 22:06
加载中...