代码如下:
#include <iostream>
using namespace ::std;
int max(int n1, int n2)
{
return n1 > n2 ? n1 : n2;
}
int abs(int x)
{
return x > 0 ? x : -x;
}
int spiral(int x, int y) //根据坐标得出当前值
{
int c = max( abs(x), abs(y) ); //当前坐标所在圈
int max = ( c * 2 - 1 ) * ( c * 2 - 1 ); //上一圈的最大值
if( y == -c ) //上边
{
return max + 7*c + x;
}
else if( x == -c ) //左边
{
return max + 5*c - y;
}
else if( y == c ) //下边
{
return max + 3*c - x;
}
else //右边 (x == c)
{
return max + c + y;
}
}
void SpiralSeq( int n )
{
for( int i = -n; i <= n; ++i ) // y坐标
{
for( int j = -n; j <= n; ++j ) //x坐标
{
printf( "%5d", spiral( j, i ) );
//逆时针
//printf( "%5d", spiral( i, j ) );
}
printf("\n");
}
}
int main()
{
int n;
cout <<