描述:
输出8皇后问题所有结果。
输入:
没有输入。
输出:
每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。
输入样例:
输出样例:
输出的前几行: No 1: A....... ....A... .......A .....A.. ..A..... ......A. .A...... ...A.... No 2: A....... .....A.. .......A ..A..... ......A. ...A.... .A...... ....A...
#include<iostream> #include<math.h>
using namespace std;
int search(int m); int panduan(int r,int c); int j=1; int a[8]={}; int flag;
int main() { search(0); return 0; }
int search(int m) { int i; if(m==8) { int i; int k; cout<<'N'<<'o'<<' '<<j<<':'<<endl; for(i=0;i<8;i++) { for(k=0;k<8;k++) { if(k==a[i]) cout<<'A'; else cout<<'.'; } cout<<endl; } j++;
} else { for(i=0;i<8;i++) { panduan(m,i); if(flag==1) { a[m]=i; search(m+1); } } } }
int panduan(int r,int c) { int i; flag=1; for(i=0;i<r;i++) { if(c==a[i]||fabs(r-i)==fabs(c-a[i])) { flag=0; break; } } }