N皇后问题--用位运算解决
2012-08-07 16:05
141 查看
#include<stdio.h>
int count ;
int queen ;
void Answers( int row, int ml, int mr)
{
if(row != queen)
{
int pos = queen & ~(row|ml|mr);
while(pos)
{
int p = pos & -pos;
pos -= p;
Answers( row|p, (ml|p)>>1, (mr|p)<<1);
}
}
else
count++;
}
int main( )
{
int n,i;
while(scanf("%d",&n) == 1)
{
if( n == 0 )
{
break;
}
count =0;
queen =1;
queen=(queen<<n)-1;
Answers(0,0,0);
printf("%d\n",count);
}
return 0;
}
int count ;
int queen ;
void Answers( int row, int ml, int mr)
{
if(row != queen)
{
int pos = queen & ~(row|ml|mr);
while(pos)
{
int p = pos & -pos;
pos -= p;
Answers( row|p, (ml|p)>>1, (mr|p)<<1);
}
}
else
count++;
}
int main( )
{
int n,i;
while(scanf("%d",&n) == 1)
{
if( n == 0 )
{
break;
}
count =0;
queen =1;
queen=(queen<<n)-1;
Answers(0,0,0);
printf("%d\n",count);
}
return 0;
}
相关文章推荐
- 八皇后问题,Java实现,可推广解决N皇后问题
- 基于VC++2012图形化解决皇后问题
- 回溯法解决N皇后问题(以四皇后为例)
- 用试探回溯法解决N皇后问题
- [置顶] matlab_N皇后问题的解决
- 回溯法解决N皇后问题(java实现)
- 算法学习:回溯解决4皇后问题
- 回溯法解决N皇后问题
- 用位运算解n皇后问题
- 回溯法解决N皇后问题(以四皇后为例)
- 用python的生成器yield轻松解决8皇后的问题以及斐波拉契数列
- 华为机试—N皇后问题(高级题160分:两种回溯法解决 吐血整理)
- 链表解决8皇后问题
- 回溯法解决N皇后问题(以四皇后为例)
- 回溯法 解决 8皇后问题
- 用位运算解决进制转化问题
- 回溯法解决N皇后问题——递归与非递归求解
- 回溯法解决N皇后问题(以四皇后为例)
- 杭电2553 N皇后问题(普通方法和位运算两种方法)
- N皇后问题 1.dfs 2.位运算解决