您的位置:首页 > 其它

8皇后问题 递归 函数调用是重点

2017-10-31 11:54 183 查看

#include<iostream>

#include<math.h>

using namespace std;

int n=8,a[8],counter=1;

int canplace(int row,int col);

void search(int m);

void output();

int main()

{

  search(0);

}

 //画地图

 void search(int m)

 {

  int i;

    if(m == n)

   {

    output(); 

 }

 else

 {

      for(i = 0;i < n;i++)

      {

     if( canplace (m,i))

    {

      a[m] = i;

   search(m+1);

    }

   

      }

    }

 }

 //判断

 int canplace(int row,int col)

 {

   int i,flag=1;

   for(i = 0;i < row;i++)

   {

    if(a[i]==col||abs(a[i]-col)==abs(i-row))

    {

      flag=0;

      break;

 }

   }

   return (flag);

 }

  void output()

 {

  cout<<"No "<< counter <<':'<<endl;

  counter++;

  for(int i=0;i<n;i++)

  {

   for(int j=0;j<n;j++)

   {

    if(a[i]==j)

    {

     cout<<'A'; 

  }

  else

  {

    cout<<'.';

  }

 }

 cout<<endl;

  }

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: