hdu2553

http://acm.hdu.edu.cn/showproblem.php?pid=2553

 Nqueen问题
#include"iostream"
using namespace std;
int n;
int a[20];
int b[20];
int c;
bool Panduan(int x)
{
for(int i=0; i<x; i++)
{
if( (a[x]-a[i])==0 || (abs(a[x]-a[i])-abs(x-i))==0 ) return false; //关键点
}
return true;
}

void dfs(int y ,int z)
{
for(int p=0; p<z; p++)
{
a[y]
=p;

if(Panduan(y))
{
if(y == z-1) c++;
else dfs(y+1,z);
}
}
}
int main()
{
for(int q=1;q<=10;q++)
{
c
=0;
dfs(
0 , q);
b[q]
=c;
}
while(cin>>n,n)
{
cout
<<b[n]<<endl;
}
return 0;
}
原文地址:https://www.cnblogs.com/FCWORLD/p/2042428.html