码迷,mamicode.com
首页 > 其他好文 > 详细

Ka的回溯编程练习 Part2|八皇后问题

时间:2015-05-18 20:20:41      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include <stdio.h>
 2 int AChessBlockRecorder[10]={0}/*下标层数,内容竖行*/,ThisIsMyPlace[10]={0};/*占领*/
 3 int TheTalentOfTheQueen1[25]={0};  //前一个维度代表主对角线特性,相减同
 4 int TheTalentOfTheQueen2[25]={0};
 5 int total=0;
 6 void output()
 7 {
 8     total++;
 9     printf("solotion:<%d>---\n",total);
10     int q,w;
11     for(q=1;q<9;q++)
12     {
13         for(w=1;w<9;w++)
14                 AChessBlockRecorder[q]==w?printf(""):printf("");
15         printf("\n");
16     }        
17 }
18 int search(int n)
19 {
20     int i;
21     for(i=1;i<=8;i++)
22     {
23         if(ThisIsMyPlace[i]==0&&TheTalentOfTheQueen1[i-n+8]==0&&TheTalentOfTheQueen2[i+n]==0) //此竖行尚未被皇后占领 
24         {
25             AChessBlockRecorder[n]=i;
26             ThisIsMyPlace[i]=1;
27             TheTalentOfTheQueen1[i-n+8]=1;
28             TheTalentOfTheQueen2[i+n]=1;
29             if(n==8) output();
30             else search(n+1);
31             TheTalentOfTheQueen1[i-n+8]=0;
32             TheTalentOfTheQueen2[i+n]=0;
33             ThisIsMyPlace[i]=0; 
34         }
35     }
36 }
37 int main()
38 {
39     freopen("o.txt","w",stdout);
40     search(1);
41     return 0;
42 }

算是回溯中比较基本的了。

Ka的回溯编程练习 Part2|八皇后问题

标签:

原文地址:http://www.cnblogs.com/KakagouLT/p/4512688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!