程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 八皇後問題,皇後

八皇後問題,皇後

編輯:關於C語言

八皇後問題,皇後


自己在學習八皇後問題中遇到理解上有問題的地方加了注釋,貼出來希望得到大家的指點:

 1 //---------------------------------------------
 2 //環境:vc6.0
 3 //時間:2015/9/15
 4 //用途:八皇後問題求解
 5 //作者:kangwei
 6 //---------------------------------------------
 7 #include <stdio.h>
 8 #include <malloc.h>
 9 
10 void search(int *C, int n, int cur)                                //判斷第 cur 行
11 {
12     int row, col;
13     int ok;
14     
15     if(cur == n)                                                // 排完n個皇後,打印輸出
16     {
17         printf("解:\n");
18         for( row = 0; row < n; row++ )
19         {
20             for(col = 0 ; col < n; col++ )
21             {
22                 if(C[row] == col)
23                 {
24                     printf("# ");
25                 }
26                 else
27                 {
28                     printf("0 ");
29                 }
30             }
31             printf("\n");
32         }
33     }
34     else
35     {
36         for( col = 0; col < n; col++)                            // 在當前行 cur 枚舉每一個位置(列)
37         {
38             ok = 1;
39             C[cur] = col;
40             for( row = 0; row < cur; row++)                        // 依次與前 cur 行的已放置的 皇後 判斷是否沖突
41             {
42                 if( C[cur]==C[row] || C[cur]-C[row] == cur-row || C[cur]-C[row] == row-cur )
43                 {
44                     ok = 0;
45                     break;
46                 }
47             }
48             if(ok)
49             {
50                 search(C, n, cur+1);
51             }
52         }
53     }
54 }
55 
56 void HuangHou(int n)
57 {
58     int *C = (int *)malloc(sizeof(int)*n);
59     search(C, n, 0);
60     free(C);
61 }
62 
63 int main()
64 {
65     HuangHou(8);
66     return 0;
67 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved