골뱅이 알고리즘(반복문, 배열)
/**********************************************************************************
* *
* 제 목 : 골뱅이 알고리즘 *
* 작성자 : 배기만 *
* 날 짜 : 2009. 7. 23 *
* 방 법 : 배열의 최대가 5일때 *
* 1 2 3 4 5 *
* 16 17 18 19 6 *
* 15 24 25 20 7 *
* 14 23 22 21 8 *
* 13 12 11 10 9 *
* 이런식으로 나타나도록 함 *
* *
**********************************************************************************/
#include<stdio.h>
#define MAX 5
void main()
{
int array[MAX][MAX] = {0,};
int width = 0;
int length = -1;
int count = 1;
int all_max = 0;
int i = 0;
int j = 0;
int for_i = MAX;
// 가로로 값이 들어 가는 부분은 5,4,3,2,1 갯수이며
// 세로로 값이 들어 가는 부분은 4,3,2,1 갯수로 들어 간다는 것을
// 알고 그 부분을 이용함
while(all_max < MAX)
{
i = 0, j = 0;
while(i < for_i)
{
if((all_max % 2) == 0)
{
length++;
}
else
{
length--;
}
array[width][length] = count++;
i++;
}
for_i--;
while(j < for_i)
{
if((all_max % 2) == 0)
{
width++;
}
else
{
width--;
}
array[width][length] = count++;
j++;
}
all_max++;
}
for(i = 0; i < MAX ;i++)
{
for(j = 0; j < MAX; j++)
{
printf("%2d ", array[i][j]);
}
printf("\n");
}
}