8皇后

来源:互联网 发布:全国十佳网络教育机构 编辑:程序博客网 时间:2024/05/21 10:55


描述:

输出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;  } }}