打印螺旋数。
#include <stdio.h>
int max(int a, int b) {
return a>b?a:b;
}
int abs(int a) {
return a>0?a:(-1)*a;
}
int solve(int x, int y) {
int big = max(abs(x), abs(y));
int halfside = 2*big-1;
int side = 2*big+1;
int start = halfside*halfside+1;
int end = 1 + side*side;
int re=0;
if(x==big) {
re = start;
if(x==y)
return end - 1;
else
return re+ big - y - 1;
}
if(y==-big) {
re = start + 2*big;
return re+ big -x -1;
}
if(x==-big) {
re = start + 4*big;
return re+ big + y -1;
}
if(y==big) {
re = start + 6*big;
return re+ big + x -1;
}
return re;
}
int main() {
int x,y;
for(y=4;y>=-4;y--) {
for (x=-4;x<=4;x++) {
printf("%5d", solve(x,y));
//printf("%5d(%d,%d) ", solve(x,y),x,y);
}
printf("\n");
}
return 0;
}