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

      1 #include <iostream>
      2 using namespace std;
      3 
      4 #define N 8
      5 
      6 int a[N][N] = { 0 };
      7 
      8 bool judge(int a[][N],int b,int c)//b行 c列
      9 {
     10 
     11     for (int i = 0; i < N; i++)//判断行
     12     {
     13         if (a[b][i] == 1)
     14         {
     15             return false;
     16         }
     17     }
     18 
     19     for (int j = 0; j < N; j++)//判断列
     20     {
     21         if (a[j][c] == 1)
     22         {
     23             return false;
     24         }
     25     }
     26 
     27     int tempB = b;
     28     int tempC = c;
     29 
     30     while (tempB >= 1 && tempC < N-1)
     31     {
     32         tempB--;
     33         tempC++;
     34 
     35         if (a[tempB][tempC] == 1)
     36         {
     37             return false;
     38         }
     39     }
     40 
     41     tempB = b;
     42     tempC = c;
     43     while (tempB < N-1 && tempC >= 1)
     44     {
     45         tempB++;
     46         tempC--;
     47 
     48         if (a[tempB][tempC] == 1)
     49         {
     50             return false;
     51         }
     52     }
     53 
     54     tempB = b;
     55     tempC = c;
     56     while (tempB >= 1 && tempC >= 1)
     57     {
     58         tempB--;
     59         tempC--;
     60 
     61         if (a[tempB][tempC] == 1)
     62         {
     63             return false;
     64         }
     65     }
     66 
     67     tempB = b;
     68     tempC = c;
     69     while (tempB < N-1 && tempC < N-1)
     70     {
     71         tempB++;
     72         tempC++;
     73 
     74         if (a[tempB][tempC] == 1)
     75         {
     76             return false;
     77         }
     78     }
     79 
     80     return true;
     81 }
     82 
     83 void print()
     84 {
     85     for (int i = 0; i < N; i++)
     86     {
     87         for (int j = 0; j < N; j++)
     88         {
     89             cout << a[i][j] << "  ";
     90         }
     91         cout << endl;
     92     }
     93 }
     94 
     95 int count1 = 0;
     96 
     97 void fun(int a[][N], int b)//b行,c列
     98 {
     99     if (b == N)//说明第七行已经放下了
    100     {
    101         print();
    102         cout << ++count1 << "" << endl;
    103         system("pause");
    104         return;
    105     }
    106     else
    107     {
    108         for (int i = 0; i < N; i++)//遍历列
    109         {
    110             if ( judge(a, b, i) )
    111             {
    112                 a[b][i] = 1;
    113                 fun(a, b + 1);
    114                 a[b][i] = 0;
    115             }
    116         }
    117     }
    118 }
    119 
    120 int main()
    121 {
    122     fun(a, 0);
    123 
    124     system("pause");
    125     return 0;
    126 }
  • 相关阅读:
    Java.Annotations
    Tools.Eclipse.HowToImportAnAndroidLibraryProjectIntoWorkspace
    Android.Tools.Eclipse hangs at the Android SDK Content Loader
    .Net之用户控件笔记
    sql语句之静态行转列(转)
    sql语句之查看数据库及数据表创建日期
    sql语句之UNION,联合查询
    Pyhton不能输入中文注释
    js获取referrer中的参数
    angularJS插入html及更换iframe的src
  • 原文地址:https://www.cnblogs.com/xiaochi/p/5035633.html
Copyright © 2011-2022 走看看