n皇后 位运算

xiaoxiao2021-02-28  142

清晰的讲解:http://blog.csdn.net/xadillax/article/details/6512318 代码:

#include<stdio.h> int n,ans,lim; inline const int read(){ register int f=1,x=0; register char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return f*x; } void dfs(int r,int ld,int rd){ if(r!=lim){ int pos=lim&~(r|ld|rd); while(pos){ int p=pos&-pos; pos-=p; dfs(r+p,(ld+p)<<1,(rd+p)>>1); } } else ans++; } int main(){ n=read(); lim=(1<<n)-1; dfs(0,0,0); printf("%d",ans); }
转载请注明原文地址: https://www.6miu.com/read-29230.html

最新回复(0)