您的位置:首页 > 其它

回朔算法之 八皇后 问题

2015-08-19 12:08 288 查看
#include<iostream>
#include<iomanip>
using namespace std;
const int NUM = 8;
int x[NUM] = {-1};
void NQueen( int k, int n);
bool Place(int k, int i);

int _tmain(int argc, _TCHAR* argv[])
{

NQueen(1,8);
return 0;
}

bool Place(int k, int i)
{
for( int j = 1; j < k; j++ )
{
if( x[j] == i || abs(j-k) == abs( x[j]-i ) )
return false;
}
return true;
}

void NQueen( int k, int n )
{
if( k > n )
return;

for( int i = 1; i <= n; i++ )
{
if( Place( k,i ) )
{
x[k] = i;
if( k==n )
{
for(int j = 1; j<=n; j++)
cout << setw( x[j] * 2 ) << 'Q' << endl;
cout << "----------------------------------------------"<<endl;
}
else
NQueen( k+1,n );
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: