求教八皇后问题,枚举算法
我知道回溯法很简单,但是看不懂啊,结果看到了枚举法,俺的娘,还是看不懂,大家帮忙分析下,谢谢,枚举法应该是用总的办法减去受条件拘束的办法,可是还是没思路
程序代码:#include <iostream>
using namespace std;
bool check_1(int a[],int n)
{
for(int i=2;i<=n;i++)//bool是怎么判断的
{
for(int j=1;j<=i-1;j++)
{
if ((a[i]==a[j])||(abs(a[i]-a[j])==i-j))
{
return false;
}
}
}
return true;
}
void queens_1()
{
int a[9];
int count = 0;
for(a[1]=1;a[1]<=8;a[1]++)//这一大串for是用来干嘛的,可不可以算出执行一次后的结果
{
for(a[2]=1;a[2]<=8;a[2]++)
{
for(a[3]=1;a[3]<=8;a[3]++)
{
for(a[4]=1;a[4]<=8;a[4]++)
{
for(a[5]=1;a[5]<=8;a[5]++)
{
for(a[6]=1;a[6]<=8;a[6]++)
{
for(a[7]=1;a[7]<=8;a[7]++)
{
for(a[8]=1;a[8]<=8;a[8]++)
{
if(!check_1(a,8))
continue;
else
{
for(int i=1;i<=8;i++) //这里是什么意思
{
cout<<a[i];
}
cout<<endl;
count++;
}
}
}
}
}
}
}
}
}
cout<<count<<endl;
}
void main()
{
queens_1();
}









