~cpp #include <iostream.h> #define QUEEN 8 int Queen[QUEEN][QUEEN]={0}; int total=0; void print_result(); void reset(int fromline=0); void get_Queen(int x, int y); int check(int i, int j); int main() { for(int i=0; i<QUEEN; i++) { reset(); get_Queen(i,0); } return 0; } void get_Queen(int x, int y) { reset(y+1); Queen[x][y]=1; if(y==QUEEN-1) print_result(); for(int i=0; i<QUEEN; i++) if(check(i,y+1)) get_Queen(i,y+1); Queen[x][y]=0; } void print_result() { int i,j; for(i=0; i<QUEEN; i++) { for(j=0; j<QUEEN; j++) cout << Queen[j][i] << " "; cout << endl; } cin.get(); } void reset(int fromline) { int i,j; for(i=0; i<QUEEN; i++) for(j=fromline; j<QUEEN; j++) Queen[i][j]=0; } int check(int i, int j) { if(i<0 || j<0 || i>=QUEEN || j>=QUEEN) return 0; int x, y, sum=0; for(y=j-1; y>=0 && sum==0; y--) /* 위로 */ sum+=Queen[i][y]; for(x=i-1; x>=0 && sum==0; x--) /* 왼쪽으로 */ sum+=Queen[x][j]; for(x=i-1, y=j-1; x>=0 && y>=0 && sum==0; x--, y--) /* 대각선 */ sum+=Queen[x][y]; for(x=i+1, y=j-1; x<QUEEN && y>=0 && sum==0; x++, y--) /* 대각선 */ sum+=Queen[x][y]; return (int)(sum==0); }