关于螺旋队列

来源:互联网 发布:如何打开软件蜂窝数据 编辑:程序博客网 时间:2024/04/27 22:22

21 22....

20 7 8 9 10

19 6 1 2 11

18 5 4 3 12

17 16 15 14 13

看清以上数字排列的规律,设点1点的坐标是(0,0), x方向向右为正,y方向向下为正。例如,7的坐标为(-1,-1),2的坐标为(0,1)

等等。编程实现输入任意一点坐标(x, y),输出所对应的数字。

#include <stdio.h>#define max(a,b) ((a)<(b)?(b):(a))#define abs(a)((a)>0?(a):-(a))int foo(int x, int y ){int t = max(abs(x), abs(y));int u = t + t;int v = u -1;v = v*v+u;if(x == -t)v+=u+t-y;else if(y==-t)v += 3*u+x-t;else if(y==t)v += t-x;elsev += y-t;return v;}int main(){int x, y;clrscr();for(y = -4; y<=4; y++){for(x  =-4; x<=4; x++)printf("%5d", foo(x,y));printf("\n");}while(scanf("%d,%d",&x, &y)==2)printf("%d\n",foo(x,y));return 0;}


原创粉丝点击