[달팽이 배열]
N*N 정방행렬에 달팽이 집과 같은 순서로 데이터를 저장한다.
달팽이 배열은 배열의 크기나 시계 방향 또는 반시계 방향 어디든지 상관 없으나, 이 문제에서는 외부에서 중심까지 시계 방향으로 회전시키는 경우를 다룬다.
※ 4X4 달팽이 배열을 분석하시오.
※ 5X5 달팽이 배열을 분석하시오.
1. 4X4 정방행렬에 달팽이 집과 같은 순서로 숫자 1부터 차례대로 기억시킨 후, 그 값을 출력하시오.
int main()
{
int x;
int i = 0;
int j = 0;
int val = 0;
int arr[4][4];
// 달팽이 모양으로 입력
for(x=0; x<(4+1)/2; x++)
{
for(i=x, j=x; j<4-x; ++j) // 왼쪽 -> 오른쪽
{
arr[i][j] = ++val;
}
for(i=x+1,j=4-x-1;i<4-x;++i) // 위 아래
{
arr[i][j] = ++val;
}
for(i=4-x-1, j=4-x-2; j>=x; --j) // 오른쪽 -> 왼쪽
{
arr[i][j] = ++val;
}
for(i=4-x-2, j=x; i>x ;--i) //아래 -> 위
{
arr[i][j] = ++val;
}
}
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
printf("%3d", arr[i][j]);
}
printf("\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int x;
int i = 0;
int j = 0;
int val = 0;
int arr[4][4];
// 달팽이 모양으로 입력
for(x=0; x<(4+1)/2; x++)
{
for(i=x, j=x; j<4-x; ++j) // 왼쪽 -> 오른쪽
{
arr[i][j] = ++val;
}
for(i++,j--;i<4-x;++i) // 위 아래
{
arr[i][j] = ++val;
}
for(--i,--j; j>=x; --j) // 오른쪽 -> 왼쪽
{
arr[i][j] = ++val;
}
for(--i,++j;i>x;--i) //아래 -> 위
{
arr[i][j] = ++val;
}
}
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
printf("%3d", arr[i][j]);
}
printf("\n");
}
return 0;
}
2. 5X5 정방행렬에 달팽이 집과 같은 순서로 숫자 1부터 차례대로 기억시킨 후, 그 값을 출력하시오.
#include<stdio.h>
int main()
{
int x;
int i = 0;
int j = 0;
int val = 0;
int arr[5][5];
// 달팽이 모양으로 입력
for(x=0; x<(5+1)/2; x++)
{
for(i=x, j=x; j<5-x; ++j) // 왼쪽 -> 오른쪽
{
arr[i][j] = ++val;
}
for(i=x+1,j=5-x-1;i<5-x;++i) // 위 아래
{
arr[i][j] = ++val;
}
for(i=5-x-1, j=5-x-2; j>=x; --j) // 오른쪽 -> 왼쪽
{
arr[i][j] = ++val;
}
for(i=5-x-2, j=x; i>x ;--i) //아래 -> 위
{
arr[i][j] = ++val;
}
}
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
printf("%3d", arr[i][j]);
}
printf("\n");
}
return 0;
}
'C 언어 > 임베디드 C' 카테고리의 다른 글
구조체를 사용한 파일 입출력 (0) | 2011.06.29 |
---|---|
malloc(), free() (0) | 2011.06.22 |
어셈블리 기본소스 (0) | 2011.06.15 |
메모리 저장주소 보기 및 활용 (0) | 2011.04.26 |
메모리내 주소 저장방식 (0) | 2011.04.26 |