赞
踩
分析:
该题与给定状态下的n皇后问题相似,只不过在搜索时要用两层循环。
在第一层循环里放置其中一种颜色的皇后,在第二层的循环中放置另一种颜色的皇后。
- #include <bits/stdc++.h>
-
- using namespace std;
- int upper,ans,n;
- int a[10];
- void dfs(int i,int col,int maindia,int condia,int co,int maindi,int condi)
- {
- if(col==upper&&co==upper)
- {
- ans++;
- return ;
- }
- int canput=a[i]&(~(col|maindia|condia));
- while(canput)
- {
- int lowbit=canput&(-canput);
- int canpu=a[i]&(~(co|maindi|condi|lowbit));
- while(canpu)
- {
- int lowbi=canpu&(-canpu);
- dfs(i+1,col|lowbit,(maindia|lowbit)>>1,((condia|lowbit)<<1)&upper,co|lowbi,(maindi|lowbi)>>1,((condi|lowbi)<<1)&upper);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。