Algorithm

골뱅이 알고리즘(반복문, 배열)

행복하면 2009. 7. 23. 04:16


/**********************************************************************************
*                                                                                                                         *
*    제  목 : 골뱅이 알고리즘                                                                                    *
*    작성자 : 배기만                                                                                                *
*    날  짜 : 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");
 }
}