题目:求解皇后问题的算法,要求用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 ;
}