C++中的八皇后问题

发布时间:2019-07-31 21:49:16

求C++中的八皇后问题的二维数组解法源代码,题目如下:要在国际象棋的棋盘中放置八个皇后,使任意两个皇后不能互相吃(皇后能吃同一行、同一列、同一对角线的任意棋子),请输入这八个皇后的平面坐标.

推荐回答

还没有选出推荐答案,请稍候访问或查看其他回答!

其他回答

这个随便找本教程都有的(经典的算法问题了)

#include <stdio.h>#include <math.h>void NQueens(int m);bool canplace(int t);void print();#define N 8int Array[9]={0};int sum=0;int main(){

   NQueens(1);    return 0;}void NQueens(int m){

   if(m>N) {  sum++;  print(); } else  for(int i=1;i<=N;i++)  {   Array[m]=i;   if(canplace(m))    NQueens(m+1);  }}void print(){ int i,j; printf("No %d:\n",sum); for(i=1;i<=N;i++) {  for(j=1;j<=N;j++)  {   if(Array[i]==j)    printf("A");   else    printf(".");  }  printf("\n"); }}bool canplace(int t){ for(int i=1;i<t;i++)  if(Array[i]==Array[t]||abs(t-i)==abs(Array[t]-Array[i]))   return false;  return true;}

以上问题属网友观点,不代表本站立场,仅供参考!