您的位置:首页 > 其它

螺旋队列问题

2009-12-11 16:44 246 查看
关于那个典型的螺旋队列问题,我这里有一个解答,看代码似乎比较复杂,但是实际上思路很容易理解,我是把整个区域按对角线划分为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*x +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*y +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上已通过测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: