编程菜鸟的日记-初学尝试编程-螺旋队列

#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;

 

     

   

posted @ 2013-10-22 10:39  编程的爬行者  阅读(165)  评论(0编辑  收藏  举报