思路:
紅線方程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--;
}
}
}