📄 8_queens.cpp
字号:
#include <iostream.h>
#include <math.h>
#include <time.h>
const int N=8;
int X[N+1];
bool place(int k)
{//如果一个皇后能放在第k行和X(k)列,则返回true,否则返回false。
//X是一个全程数组,进入此过程时已设置了k个值。
int i=1;
while(i<k)
{
if(X[i]==X[k] || abs(X[i]-X[k])==abs(i-k))
return false;
i=i+1;
}
return true;
}
void n_queens(int n)
{
int k;
k=1;//k是当前行
X[1]=0;//X[k]是当前行
int j=0;//记录解的个数
cout<<"所有可能的解如下:"<<endl;
while(k>0)
{
X[k]=X[k]+1;
while(X[k]<=n && !place(k))
{
X[k]=X[k]+1;
}
if(X[k]<=n)
if(k==n)
{
cout<<"第"<<++j<<"组解:";
for(int i=1; i<=n; i++)
cout<<X[i]<<" ";
cout<<endl;
}
else
{
k=k+1;
X[k]=0;
}
else
k=k-1;
}
}
int main()
{
clock_t start, finish;
double duration;
/* 测量此事件持续的时间*/
time_t t;
time(&t);
start = clock();
n_queens(N);
time(&t);
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
cout<<endl;
cout<<"用时"<<duration<<"秒"<<endl;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -