• 八皇后问题


     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 }
  • 相关阅读:
    百度练习题 统计元音字母
    guess number
    LPTHW 结束了
    大坑
    LPTHW 笨办法学python 40章 类
    LPTHW 笨办法学python 37章 python关键字/关键词介绍
    dis进行反编译
    LPTHW 笨办法学python 33章
    eclipse安装详解以及遇到的问题
    安装eclipse错误Could not create the Java virtual machine
  • 原文地址:https://www.cnblogs.com/mxj961116/p/10724388.html
Copyright © 2020-2023  润新知