文件夹中包括常用的数据结构的算法
源代码在线查看: queen.cpp
#include
#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 };
cout cout }
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 // cin>>nowRow;
int num = 0;
Queen(0, num);
}