2010年8月9日

八皇后-位运算

 

#include<stdio.h>
#include 
"limit.h"
int row,x,y,ans;
int n;

void dfs(int i)
{    int j,tp;
     
if(i>=n) {++ans;return;}
     
for(j=0;j<n;++j)
      
if(!((1<<j)&row)&&!((1<<(i+j)&x))&&!((1<<(n-1+i-j)&y)))
      
{     row+=1<<j;
            x
+=1<<(i+j);
            y
+=1<<(n-1+i-j);
              dfs(i
+1);
            row
-=1<<j;
            x
-=1<<(i+j);
            y
-=1<<(n-1+i-j);
      }

}

int main()
{     _time T;
      
while(1)
      
{         scanf("%d",&n); 
                T.begin();
                row
=x=y=ans=0;
                dfs(
0);
                T.end();
                printf(
"%d\n",ans);
      }

      
return 0;
}

posted @ 2010-08-09 18:52 胡争 阅读(357) | 评论 (0)编辑 收藏

仅列出标题  
<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔分类

随笔档案

ACMer_Blog

搜索

最新评论