//1차원 배열 이용, 가지치기 & 백트래킹. 8 Queen.변경가능.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream fin("input.txt");
ofstream fout("output.txt");
int n,cnt=0;
int colc[20],ruc[20],luc[20],Q[8]={0};

void queen(int p){
	if(p>=n){
		cout << "[" << ++cnt << "]th" << endl;
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				if(Q[i]==j)
					cout << "Q";
				else
					cout << "#";
			}
			cout << endl;
		}
		cout << endl;
	}
	else{
		for(int j=0;j<n;j++){
			if(colc[j]==0 && ruc[p+j]==0 && luc[p-j+n]==0){
				Q[p]=j;
				colc[j]=ruc[p+j]=luc[p-j+n]=1;
				queen(p+1);
				colc[j]=ruc[p+j]=luc[p-j+n]=0;
			}
		}
	}
}

void main(){
	n=8;
	for(int i=0;i<n*2;i++){
		colc[i]=ruc[i]=luc[i]=0;
	}
	queen(0);
}

+ Recent posts