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;

}