螺旋队列问题

关于那个典型的螺旋队列问题,我这里有一个解答,看代码似乎比较复杂,但是实际上思路很容易理解,我是把整个区域按对角线划分为4个部分

 

代码
 1 #include<iostream>
 2 #include <cstdlib>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int result,x,y;
 9     cin>>x>>y;
10     if((0 == x)&&(0 == y))
11     {
12         result = 1;
13         cout << result<<endl;
14     }
15     else if((x > 0)&&((x>abs(y))||(x == y)))  //right  1=2-1  (x == y)对角线的情况
16     {
17         result = 4*x*(x-1+ 1*+1 +y;
18         cout << result<<endl;
19     }
20     else if((x < 0)&&((abs(x)>abs(y))||(x == y)))   //left  5=6-1  (x == y)对角线的情况
21     {
22         result = 4*abs(x)*(abs(x)-1+ 5*abs(x) +1 +(-y);
23         cout << result<<endl;
24     }
25     else if((y > 0)&&((y>abs(x))||((-x) == y)))   //up  3=4-1  ((-x) == y)对角线的情况
26     {
27         result = 4*y*(y-1+ 3*+1 +(-x);
28         cout << result<<endl;
29     }
30     else if((y < 0)&&((abs(y) > abs(x))||(x == (-y))))  //down  7=8-1 (x == (-y))对角线的情况
31     {
32         result = 4*abs(y)*(abs(y)-1+ 7*abs(y) +1 +x;
33         cout << result<<endl;
34     }
35     return 0;
36 }

 

 该代码在linux上已通过测试

posted on 2009-12-11 16:44  fairycao  阅读(441)  评论(0)    收藏  举报