您的位置:首页 > 其它

回溯法实现八皇后问题

2013-08-19 17:11 225 查看
/*======================
用回溯法求解八皇后问题
2013-08-10 By Mei
======================*/

#include <iostream>
#define N 8
#define abs(x) ((x)>=0)?(x):(-(x))
using namespace std;
int a[N+1];

void output()
{
static int count ;
count ++;
cout <<count<<endl;
for(int i=1; i<=N; ++i)
cout<<a[i]<<" ";
cout<<endl;
}

void Queen(int row)
{
if(row == N+1)
output();
else
{
for(int i=1; i<=N; ++i)
{
int k = 1;
a[row] = i;
while(row != k)
{
if((a[k]-a[row]) * (abs(k-row)-abs(a[k]-a[row]))!=0)
{
k++;
if(k==row)
Queen(row+1);
}
else
break;
}

}
}
}

int main()
{
int i;
for(i=1; i<=N; ++i)
{
a[1] = i;
Queen(2);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  八皇后