思路:
红线方程y=x,绿线方程y=-x+4,4为矩形边长。
两条直线将区域分为四个部分,划分好每个区域的边界值,每个区域的坐标变化规律有四种,x++,y++,x--,y--,接下来仔细分析就能得到算法:
void
SpiralArray(
int
size,
int
** ar)
{
int
a=size/2*2+1;
//保证边长为奇数
int
y=a/2,x=a/2;
//从中心点开始
for
(
int
i=1;i<=size*size;i++)
//(int i=size*size;i>=1;i--)
{
if
(x<=a-y-1&&x>=y)
{
ar[y][x]=i;
x++;
}
else
if
(x>a-y-1&&x>y)
{
ar[y][x]=i;
y++;
}
else
if
(x>a-y-1&&x<=y)
{
ar[y][x]=i;
x--;
}
else
if
(x<=a-y-1&&x<y)
{
ar[y][x]=i;
y--;
}
}
}