8皇后



描述:

 

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

 

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值