您的位置:首页 > 其它

HDOJ 2553 N皇后问题

2011-04-24 13:38 288 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2553

不打表 果断超时!!

#include<iostream>
using namespace std;
int n,sum;
int right0[22],left0[22],row0[22];
int dfs(int i)
{
int j,rm,lm;
rm=i;
lm=n-i;
for(j=0;j<n;j++,rm++,lm++)
{
if(right0[rm]||left0[lm]||row0[j])
continue;
else
{
if(i>=n-1){sum++;return 0;}
right0[rm]=1;
left0[lm]=1;
row0[j]=1;
dfs(i+1);
right0[rm]=0;
left0[lm]=0;
row0[j]=0;
}
}
}
int main()
{
int f[11];
for(n=1;n<=10;n++)
{
memset(right0,0,sizeof(right0));
memset(left0,0,sizeof(left0));
memset(row0,0,sizeof(row0));
sum=0;
dfs(0);
f
=sum;
}
while(cin>>n&&n!=0)
{
cout<<f
<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: