输入一个坐标值,输出其对应的数字
void rotate1(int& x,int& y)
{
if(abs(x)==abs(y))
{
if(x>=0&&y>=0)
--x;
else
if(x>=0&&y<=0)
++y;
else
if(x<=0&&y<=0)
++x;
else
--y;
}
else
if(abs(x)>abs(y))
{
if(x>0)
{
if(x>y+1)
++y;
else
--x;
}
else
--y;
}
else
{
if(y>0)
--x;
else
++x;
}
// printf("%d,%d/n",x,y);
}
int rotatematrix(int x,int y)
{
if(x==0&&y==0)
return 1;
int m=abs(x)>abs(y)?abs(x):abs(y);
int base,x1,y1;
base=(2*m-1)*(2*m-1);
x1=m-1;
y1=m-1;
while(abs(x-x1)+abs(y-y1))
{
rotate1(x,y);
++base;
}
return base;
}