螺旋队列(p98)

时间:2023-12-05 14:04:38

  先判断这个坐标代表的数位于哪一层,然后依据该层最大的数去计算这个坐标所代表的数。

 #include"iostream"
#include"stdio.h"
#include"algorithm"
#include"map"
using namespace std; typedef pair<int,int> pInt2; int GetLayer(int x,int y)
{
return abs(x)>abs(y)?abs(x):abs(y);
} int GetRes(int x,int y,int layer)
{
int res,maxLayerNum=(*layer+)*(*layer+);
if(y==-layer)
{
if(x>)
res=maxLayerNum-(layer-x);
else
res=maxLayerNum-layer+x;
}
else if(x==-layer)
{
if(y<)
res=maxLayerNum-*layer-(layer+y);
else
res=maxLayerNum-*layer-y;
}
else if(y==layer)
{
if(x<)
res=maxLayerNum-*layer-(layer+x);
else
res=maxLayerNum-*layer-x;
}
else
{
if(y>)
res=maxLayerNum-*layer-(layer-y);
else
res=maxLayerNum-*layer+y;
}
} int main()
{
int x,y;
while(cin>>x>>y)
{
cout<<"(x,y): "<<GetRes(x,y,GetLayer(x,y))<<endl;
}
return ;
}