~cpp
#include <iostream.h>
// 상수 선언
#define NO 0
#define QUEEN 1
#define ROAD 2
int b[9][9]; // 체스판 선언
void ClearBoard();
void FillBoard(int i, int j);
void main()
{
// 시작^^
int q[8]; // Col을 저장할 배열
int i, j;
// 체스판 초기화
ClearBoard();
for(i=0;i<=7;i++) q[i] = 0;
int line = 0;
while(line != 8) { // 8줄을 모두 성공하면 끝내기.
// 빈칸 찾아 채우기
if(b[line][q[line]] == NO) { // 빈칸이 있으면 채우고.
FillBoard(line, q[line]);
line++;
}
else { // 빈칸이 없으면 앞줄에 값을 증가시킨다.
for(i=line+1;i<=7;i++) q[i] = 0;
q[line]++;
if(q[line] >=8) {
q[line] = 0;
q[line-1]++;
}
line=0;
ClearBoard();
}
}
// 출력해볼까?
for(i=0;i<=7;i++) {
for(j=0;j<=7;j++) {
if( b[j][i] == 1) cout << "Q ";
else cout << "- ";
}
cout << "\n";
}
// 여기까지 출력
}
void FillBoard(int i, int j) // 보드를 채웁시다.
{
int k, l;
// 왼쪽 오른쪽 위 아래
for(k=0;k<=7;k++) { b[k][j] = ROAD; b[i][k] = ROAD; }
// 대각선1
for(k=i,l=j;k<=7 && l<=7;k++,l++) b[k][l] = ROAD;
for(k=i,l=j;k>=0 && l>=0;k--,l--) b[k][l] = ROAD;
// 대각선2
for(k=i,l=j;k<=7 && l>=0;k++,l--) b[k][l] = ROAD;
for(k=i,l=j;k>=0 && l<=7;k--,l++) b[k][l] = ROAD;
b[i][j] = QUEEN;
}
void ClearBoard() // 보드를 닦읍시다.
{
int i, j;
for(i=0;i<=7;i++) {
for(j=0;j<=7;j++) {
b[i][j] = NO;
}
}
}
여기에 옮겨봤습니다.. ㅡ.ㅡ; --선호










