📄 queen.cpp
字号:
#include <iostream.h>
#define nowRow 8
int col[8] = {0} ; //col[i] 标识第 i 列是否安放了皇后
int md[15] = {0}; //md[k] 标识第 k 条主对角线是否安放了皇后
int sd[15] = {0}; //sd[k] 标识第 k 条次对角线是否安放了皇后
int q[8] = {0}; //q[i] 记录第 i 行皇后在第几列
void Queen( int i, int &num )
{
if ( i == nowRow ) // //输出一个布局
{
num++;
for (int a = 0; a < nowRow; a++ )
{
cout << q[a] << ',';
};
cout <<num;
cout << endl;
}
else
{
for ( int j = 0; j < 8; j++ )
{
if ( col[j] == 0 && md[8+i-j-1] == 0 && sd[i+j] == 0 ) ////第 i 行第 j 列没有攻击
{
col[j] = md[8+i-j-1] = sd[i+j] = 1;
q[i] = j; //在第 i 行第 j 列安放皇后
Queen ( i+1 , num); //在第i+1行安放皇后
col[j] = md[nowRow+i-j-1] = sd[i+j] = 0; q[i] = 0; //撤消第 i 行第 j 列的皇后
}
}
}
};
void main()
{
void Queen( int i,int &num );
// int nowRow ;
// cout<<"Please inPut the num oF Martix/n";
// cin>>nowRow;
int num = 0;
Queen(0, num);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -