n*n달팽이 배열
[n+2][n+2]배열만들고 가장자리 1로 도배후
다음 배열의 값이 0이 아니면 방향을 바꿔주고
0이면 숫자 더해서 값 넣어주는 거임
후 어렵넹..
#include<stdio.h>
int main(void)
{
const int n = 9;
const int nSize = n + 2;
int nList[nSize][nSize] = { 0 };
int x = 1, y = 1, i = 0, j = 0, nCount = 0, changeCount = 0, next = 0;
for (i = 0; i < nSize; ++i)
{
for (j = 0; j < nSize; ++j)
{
if (i == 0 || j == 0 || i == nSize - 1 || j==nSize - 1)
nList[i][j] = 1;
}
}
i = 1, j = 1;
while (nCount != n * n)
{
while (next == 0)
{
y = i, x = j;
nList[y][x] = ++nCount;
if (changeCount % 4 == 0)
++j;
else if (changeCount % 4 == 1)
++i;
else if (changeCount % 4 == 2)
--j;
else
--i;
next = nList[i][j];
}
++changeCount;
next = 0, i = y, j = x;
if (changeCount % 4 == 0)
++j;
else if (changeCount % 4 == 1)
++i;
else if (changeCount % 4 == 2)
--j;
else
--i;
}
for (i = 1; i < nSize-1; ++i)
{
for (j = 1; j < nSize-1; ++j)
{
printf("%3d", nList[i][j]);
}
puts("");
}
return 0;
}
댓글 0