C++ 八皇后实现代码

来源:互联网 发布:网络剧推荐 编辑:程序博客网 时间:2024/05/18 02:27

 #include "stdafx.h"
#include <algorithm>
#include <iostream>
using namespace std;

int q[8][8]={0};
int colum[8]={0};
int cl[8]={0};
int lc[8]={0};


void output()
{
for(int i=0;i<8;++i)
{
 copy(q[i],q[i]+sizeof(q[i])/sizeof(int),ostream_iterator<int>(cout,"  "));
 cout<<endl;
}
}

void queen(int step,int &c)
{  
 if(step==8) //得到答案
 {
  cout<<"("<<++c<<")"<<endl;
  output();
  return;
 }
 for(int i=0;i<8;++i)
 {
  if(colum[i]==0 && cl[step-i+7]==0 && lc[step+i]==0)//不冲突
  {
     colum[i]=1;//凡走过必留下痕迹
     cl[step-i+7]=1;
     lc[step+i]=1;
     q[step][i]=1;

     queen(step+1,c);//下一行

           colum[i]=0;    //回溯
     cl[step-i+7]=0;
     lc[step+i]=0;
     q[step][i]=0;  
  }
 }

}
int _tmain(int argc, _TCHAR* argv[])
{
 int c=0;
 queen(0,c);
 cout<<"答案数目:"<<c<<endl;
 return 0;
}

原创粉丝点击