zoukankan      html  css  js  c++  java
  • 深度优先搜索——八皇后问题

    代码:(控制台打印不了92种情况,只打印前10种)

     1 #include<iostream>
     2 #include<string>
     3 #include<windows.h>
     4 #define ok  1
     5 #define error   0
     6 using namespace std;
     7 
     8 
     9 int a[9][9]={0};
    10 int num=0;
    11 
    12 int Ifblock(int x,int y)    //判断有没有产生冲突
    13 {
    14     int i,j,k;
    15     j=y;
    16     k=y;
    17     for(i=x-1;i>0;i--)
    18     {
    19         if(a[i][y]==1)
    20             return error;
    21         if((--j)>0&&a[i][j]==1)
    22             return error;
    23         if((++k)<9&&a[i][k]==1)
    24             return error;
    25     }
    26     return ok;
    27 }
    28 
    29 int DFS(int step)    //深度优先搜索核心代码
    30 {
    31     int i,j,k;
    32     if(step==9)
    33     {
    34         num++;
    35         if(num<=10)
    36         {
    37             for(j=1;j<9;j++)
    38             {
    39                 for(k=1;k<9;k++)
    40                 {
    41                     printf("%2d",a[j][k]);
    42                 }
    43                 cout<<'
    ';
    44             }
    45             cout<<'
    '<<endl;
    46         }
    47         return ok;
    48     }
    49     for(i=1;i<9;i++)
    50     {
    51         if(Ifblock(step,i))
    52         {
    53             a[step][i]=1;
    54             //step++       
    55             DFS(step+1);
    56             a[step][i]=0;
    57         }
    58     }
    59     return ok;
    60 }
    61 
    62 int main()
    63 {
    64     int step=1;
    65     DFS(step);
    66     cout<<"一共"<<num<<"种可能"<<endl;
    67     return 0;
    68 }
  • 相关阅读:
    向内的寻找
    了解潜意识
    NOI2014 Day1
    NOI2011 Day1
    NOI2012 Day2
    NOI2012 Day1
    NOI2013 Day2
    NOI2013 Day1
    拉格朗日乘数法
    NOI2015 Day2
  • 原文地址:https://www.cnblogs.com/fangyan5218/p/4728318.html
Copyright © 2011-2022 走看看