您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: