~cpp
#include <iostream>
using namespace std;
int main()
{
int size;
int i, j;
do{ // 력 때까 반복
cout << "방 력() : ";
cin >> size;
if ( !(size%2))
cout << "다력!\n";
}while(!(size%2));
int **board = new int * [size+2]; //동 2 배
for(i=0; i< size+2; i++)
board[i] = new int [size+2];
for(i=0; i<size+2; i++) //배 기
for(j=0; j<size+2; j++)
board[i][j] = 0;
int num = 1;
int row = 1;
int mid = size / 2;
int col = mid + 1;
board[row][col] = num;
while(num != size*size) //를 다 때까 반복
{
row --; col ++; // 로, 른로
if (row == 0) //벽 부딪 경
row = size;
// 변
if (col == size+1) //벽 부딪 경
col = 1; // 변
if (!board[row][col]) //리가 경
{
num++;
board[row][col] = num; // 대
}
else //리 다른 가 경
{
row ++; col --; //기 로 돌
if (row == 0) //벽 부딪 경
row = size; // 변
if (col == size) //벽 부딪 경
col = 1; // 변
if ( row == size && col == 1)//가 맨 래 경
{
row=1; col = size; //른 맨 로
}
else //그 밖 경
{
row--; col++; //되돌림
}
row++; // 밑로
num++;
board[row][col] = num; // 대
}
}
for(i=1; i<size+1; i++) //력
{
for(j=1; j<size+1; j++)
{
cout << board[i][j] <<"\t";
}
cout << "\n";
}
return 0;
}