//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); }
퀸문제
2009. 7. 29. 21:05