题目:求解皇后问题的算法,要求用C/C++描述;
#include <iostream>
#include <stdlib.h>
using namespace std;
static char Queen[8][8];
static int a[8];
static int b[15];
static int c[15];
static int iQueenNum = 0;
void qu(int i);
void qu(int i)
{
int iColumn=0;
for ( ;iColumn < 8;iColumn++)
{
if (a[iColumn] == 0 && b[i - iColumn + 7] == 0 && c[i + iColumn] == 0)
{
Queen[i][iColumn] ='O';
a[iColumn] = 1;
b[i - iColumn + 7] = 1;
c[i + iColumn] = 1;
if (i < 7) qu(i + 1);
else
{
int iLine, iColumn;
cout << "第"<<++iQueenNum<<"种状态为:\n" << endl;
for (iLine = 0;iLine < 8;iLine++)
{
for (iColumn = 0;iColumn < 8;iColumn++ )
cout << Queen[iLine][iColumn] <<" ";
cout<<"\n";
}
cout<<"\n\n";
}
Queen[i][iColumn] = '*';
a[iColumn] = 0;
b[i - iColumn + 7] = 0;
c[i + iColumn] = 0;
}
}
}
int main()
{
int iLine, iColumn;
for (iLine = 0;iLine < 8;iLine++)
{
a[iLine] = 0;
for (iColumn = 0;iColumn < 8;iColumn++)
Queen[iLine][iColumn] = '*';
}
for (iLine = 0;iLine < 15;iLine++)
b[iLine] = c[iLine] = 0;
qu(0);
system("pause");
return 0;
}