#include<stdio.h>
int Array1(int n, int (*aptr)[50], int num)
{
static int num1=0;
int i;
if(n==0)
return 0;
if(n==1)
return 1;
for(i=0; i<n-1; i++)
{
aptr[num1][i+num1] = num;
aptr[i+num1][n-1+num1] = num+n-1;
aptr[n-1+num1][n+num1-1-i] = num+n-1+n-1;
aptr[n+num1-1-i][num1] = num+n-1+n-1+n-1;
num++;
}
num1++;
Array1(n-2, aptr, num+n-1+n-1+n-1);
}
void print(int n, int (*aptr)[50])
{
int i,j,f,p=0;
f=n*n;
while(f!=0)
{
f=f/10;
p++;
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
printf("%*d ", p, aptr[i][j]);
printf("n");
}
}
int main(void)
{
int arr[50][50];
int n, k;
printf("숫자 입력:");
scanf("%d", &n);
k = Array1(n, arr, 1);
if(k)
arr[n/2][n/2]=n*n;
print(n, arr);
return 0;
}
--------------------------------------------
다 만들고나서 인터넷으로 재귀버전 검색해보니까 내꺼 너무 초라함 애휴
달팽이를 왜 재귀로..?
달팽이 이런 알고리즘 아님?
한방향으로 직진 -> 배열의 끝 만남 -> 방향을 90도 꺾음 -> 반복
방향을 90도 꺾는 부분에서 조건을 4개로 나눠야겠지
그런듯요.. 네모 하나 만들어놓고 작은네모 호출하는식으로 짰는데.. 그생각을 못했네
내일 다시 짜봐야지