달팽이 배열


N*N 정방행렬에 달팽이 집과 같은 순서로 데이터를 저장한다.

달팽이 배열은 배열의 크기나 시계 방향 또는 반시계 방향 어디든지 상관 없으나, 문제에서는 외부에서 중심까지 시계 방향으로 회전시키는 경우를 다룬다.

달팽이03.jpg



소스 코드

#include <stdio.h>

int max;

int  main()
{
  int dal[50][50];
  int i;
  int x=0;
  int y=-1;
  int t=1;
  int p;
  int cnt=1;
  int jmax;

  printf("
배열 숫자를 입력하세요 nXn: ");
  scanf("%d",&p);
  max=p;
  
  jmax=max;
  while(0<=jmax)
  {
    for(i=0;i<jmax;i++) //
 표현
    {
      y=y+t;
      dal[x][y]=cnt;
      cnt++;
    }
    jmax--;
    for(i=0;i<jmax;i++)// 
 표현
    {
      x=x+t;
      dal[x][y]=cnt;
      cnt++;
    }
    
    t=t*-1;
  }
  for(x=0;x<max;x++)// 
출력 부분
  {    
    for(y=0;y<max;y++)
    {
      printf("%4d",dal[x][y]);
    }
    printf("\n");
  }
  
  return 0;
}


dal01.png