ep6_14.cpp

来自「c++下运行的八后问题算法」· C++ 代码 · 共 74 行

CPP
74
字号
#include<iostream.h>
#include<stdio.h>
class xqueens
{
private:
   int n,count,a[24],b[24],c[24],x[8],i;
public:
    xqueens(int nn);
    void print();
    void try_(int i);
	void counter();
};
xqueens::xqueens(int nn)
{
	n=nn;
	count=0;
	for (i=0;i<2*n+8;i++)
    {
         a[i]=1;
         b[i]=1;
         c[i]=1;
    }
}
void xqueens::print()
{
    int k;
	char con;
    for(k=0;k<n;k++)
	printf("%4d",x[k]);
    count+=1;
    if (count%25==0) 
	  cin.get(con);
	if (count==25)
		cin.get(con);
    cout<<endl;
}
void xqueens::try_(int i)
{
    int j;

    for (j=0;j<n;j++)
    if (a[j+7] && b[i+j+7] && c[i-j+7])
    {
          x[i]=j+1;
          a[j+7]=0;
          b[i+j+7]=0;
          c[i-j+7]=0;
          if (i<n-1)
              try_(i+1);
          else print();
          a[j+7]=1;
          b[i+j+7]=1;
          c[i-j+7]=1;
    }
}
void xqueens::counter()
{
	cout<<"count="<<count<<endl;
}
void main()
{  
   int n;
   cout<<endl;
   cout<<"How many queens do you want to play?(4...8)"<<endl;
   cin>>n;
   while (n<4||n>8) 
   {
      cout<<"Infeasible! Please try again.(4...8)"<<endl;
      cin>>n;
   }
   xqueens c(n);
   c.try_(0);
   c.counter();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?