nqueens.txt

来自「N皇后问题」· 文本 代码 · 共 56 行

TXT
56
字号
#include <iostream.h>
#include <math.h>
/*检查可不可以放置一个新的皇后*/
bool place(int k, int *X)
{
 int i;
 i=1;
 while(i<k)
{
  if((X[i]==X[k])||(abs(X[i]-X[k])==abs(i-k)))
   return false;
  i++;
 }
return true;
/*求解问题的所有解*/

void Nqueens(int n,int *X)
{
 X[1]=0;k=1;
 while(k>0)
 X[k]=X[k]+1;
 while((X[k]<=n)&&(!place(k, X)))
X[k]=X[k]+1;
if(X[k]<=n)
 if(k==n)
 {
 for(int i=1;i<=n;i++)
 cout<<X[i]<<" ";
 cout<<"\n";
   }
  else
  {
  k=k+1;
  X[k]=0;
 }
 else k=k-1;
 }
}
void main()
{
cout<<"|--------------N皇后问题--------------|"<<endl;
cout<<"|-------------------------------------|"<<endl<<endl;
int n;
 int *X;
int i;
while(i)
{
cout<<"请输入皇后的个数:";
 cin>>n;
 X=new int[n];
 cout<<"问题的解有:"<<endl;
Nqueens(n,X);
cout<<"Press<1> to run again"<<endl;
 cout<<"Press<0> to exit"<<endl;
 cin>>i;

⌨️ 快捷键说明

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