zoukankan      html  css  js  c++  java
  • 八皇后问题

     1 //八皇后递归解法
     2 #include<iostream>
     3 using namespace std;
     4 int queen[9]={-1,-1,-1,-1,-1,-1,-1,-1,-1};
     5 int count=0;
     6 bool available(int pointi,int pointj){//判断某个皇后是否与已有皇后冲突
     7     for(int i=1;i<pointi;i++){
     8         if(pointj==queen[i])return false;//同一列拒绝
     9         if((pointi-i)==(pointj-queen[i]))return false;//同一主对角线拒绝
    10         if((pointi-i)+(pointj-queen[i])==0)return false;//同一副对角线拒绝
    11     }
    12     return true;
    13 }
    14 void findSpace(int queenNumber){//在第queenNumber行找能放皇后的位置
    15     for(int i=1;i<9;i++){//从1~8遍历这一行的八个空位
    16         if(available(queenNumber,i)){
    17 //如果可以放这个位置就记录下第queenNumber个皇后的位置
    18             queen[queenNumber]=i;
    19             if(queenNumber==8){//如果八个皇后都放满了统计一下
    20                 count++;
    21                 return;
    22             }
    23             int nextNumber=queenNumber+1;//还有皇后没放递归放下一个皇后
    24             findSpace(nextNumber);
    25         }
    26     }
    27     queen[--queenNumber]=-1;//如果这一行没有可放的位置说明上一行皇后放的位置不行,要为上一个皇后寻找新的可放位置
    28     return;
    29 }
    30 int main(){
    31     findSpace(1);//从(1,1)开始递归
    32     cout<<count<<endl;
    33     return 0;
    34 }
  • 相关阅读:
    @JsonFormat和@DateTimeFormat 实践测试
    spring jpa CrudRepository save 新建数据没有返回id
    多线程处理pdf附件转换
    contentsize ,ios 7和 ios7之前的 有点差别,
    区别,
    裁切图片,
    transform,
    简洁代码,
    这个系统,流程,入口,业务逻辑,
    pop,pop,如果break,会pop两次,
  • 原文地址:https://www.cnblogs.com/mxj961116/p/10724388.html
Copyright © 2011-2022 走看看