hdu 2553 经典N皇后

来源:互联网 发布:新网域名转到腾讯云 编辑:程序博客网 时间:2024/05/21 08:44

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

思路:

位运算优化,最优雅的写法。

#include<bits/stdc++.h>using namespace std;int lim,sum;void dfs(int row,int left,int right){    int pos,p;    if(row!=lim){        pos=lim&~(row|left|right);        while(pos!=0){            p=pos&-pos;   //从最右边的1开始找            pos=pos-p;    //去掉最右边的1            dfs(row+p,(left+p)<<1,(right+p)>>1);   //更改对下一行的影响        }    }    else{        sum++;    }}int main(){    int n;    while(scanf("%d",&n)&&n){        sum=0;        lim=(1<<n)-1;        dfs(0,0,0);        cout<<sum<<endl;    }    return 0;}

原创粉丝点击