当前位置:   article > 正文

2n皇后问题状压dp_n皇后dp

n皇后dp

蓝桥杯2n皇后问题

分析:

该题与给定状态下的n皇后问题相似,只不过在搜索时要用两层循环。

在第一层循环里放置其中一种颜色的皇后,在第二层的循环中放置另一种颜色的皇后。

 

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int upper,ans,n;
  4. int a[10];
  5. void dfs(int i,int col,int maindia,int condia,int co,int maindi,int condi)
  6. {
  7. if(col==upper&&co==upper)
  8. {
  9. ans++;
  10. return ;
  11. }
  12. int canput=a[i]&(~(col|maindia|condia));
  13. while(canput)
  14. {
  15. int lowbit=canput&(-canput);
  16. int canpu=a[i]&(~(co|maindi|condi|lowbit));
  17. while(canpu)
  18. {
  19. int lowbi=canpu&(-canpu);
  20. dfs(i+1,col|lowbit,(maindia|lowbit)>>1,((condia|lowbit)<<1)&upper,co|lowbi,(maindi|lowbi)>>1,((condi|lowbi)<<1)&upper);
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/161937
推荐阅读
相关标签
  

闽ICP备14008679号