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 }
  • 相关阅读:
    Redis-配置文件与持久化
    Redis-搭建简单集群
    python实现简单的统计
    Redis-三种数据结构与事务
    String 类的理解
    针对Java面试来学习JAVA内容,让你事半功倍
    jdbc实现原理
    一朋友的Java基础面试题及答案(TCP/IP部分)
    Java Docker容器化技术详解
    Java新手开源项目集合
  • 原文地址:https://www.cnblogs.com/mxj961116/p/10724388.html
Copyright © 2011-2022 走看看