编程菜鸟的日记-初学尝试编程-螺旋队列
#include <iostream>
using namespace std;
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-a))
#define square(a) ((a)*(a))
int Spiral_Queue(int x,int y)
{
int t=max(abs(x),abs(y));
int val;
if(y==-t)//北边线 增长从左往右与横坐标方向一致 (2t-1).^2+7t+x
val=square(2*t-1)+7*t+x;
if(y==t)//南边线 增长从右至左与横坐标方向相反 (2t-1).^2+3t-x
val=square(2*t-1)+3*t-x;
if(x==-t)//西边线 增长从下至上与纵坐标方向相反 (2t-1).^2-y
val=square(2*t-1)+5*t-y;
else if(x==t)//东边线 增长从上至下与纵坐标方向一致 (2t-1).^2+y
val=square(2*t-1)+t+y;
return val;
}
int main()
{
int x,y;
int val;
cout<<"请输入坐标(x,y) ";
cin>>x>>y;
val=Spiral_Queue(x,y);
cout<<"val="<<val<<endl;
system("pause");
return 0;
}