1 / 2
文档名称:

N皇后问题源代码.doc

格式:doc   大小:26KB   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

N皇后问题源代码.doc

上传人:mh900965 2018/5/14 文件大小:26 KB

下载得到文件列表

N皇后问题源代码.doc

相关文档

文档介绍

文档介绍:#include<>
#include<>
int sum=0;
bool Place(int k, int i,int* x)
{//判定两个皇后是否在同一列或在同一斜线上
for (int j=0;j<k;j++)
if ((x[j]==i) || (abs(x[j]-i)==abs(j-k))) return false;
return true;
}
void NQueens(int k,int n,int *x)
{
for (int i=0; i<n;i++) { //显式约束的第一种观点,x[k]=0,1,…,n-1
if (Place(k,i,x)) { //约束函数
x[k]=i;
if (k==n-1) {
for(i=0;i<n;i++)cout<<x[i]<<" "; //输出一个可行解
cout<<endl;
sum=sum+1;
}
else NQueens(k+1,n,x); //深度优先进入下一层
}
}
}
void NQueens(int n,int *x)
{
NQueens(0,n,x);
}
void main()
{
int n,i;
cout<<"输入N值"<<endl;
cin>>n;
int *x=new int[n];
for(i=0;i<n;i++)
x[i]=0;
NQueens(0,n,x);
cout<<sum<<endl;
}