码迷,mamicode.com
首页 > 编程语言 > 详细

回溯算法之八皇后问题

时间:2014-12-02 16:35:21      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   sp   for   div   问题   log   

 1 package 回溯;
 2 
 3 public class 八皇后递归回溯 {
 4 
 5     private int length;                  //皇后数量
 6     private int sum;                     //总方案数
 7     private int num[];                   //存放皇后的一维数组
 8 
 9     public 八皇后递归回溯() {
10         length = 8;
11         sum=0;
12         num = new int[length + 1];
13     }
14     
15     public boolean check(int x) {
16         for (int i = 1; i < x; ++i) {    //在一列,或对角线
17             if (num[x] == num[i]|| Math.abs(x - i) == Math.abs(num[x] - num[i]))
18                 return false;
19         }
20         return true;
21     }
22 
23     public void reback(int x) {
24         if (x > length) {
25             for (int i = 1; i <= length; ++i) {
26                 System.out.print(num[i] + " ");
27             }
28             System.out.println();
29             sum++;
30         } else {
31             for (int i = 1; i <= length; ++i) {
32                 num[x] = i;
33                 if (check(x)) reback(x + 1);    //第x个皇后找到位置,则继续第x+1个,i=1的方案完毕后继续i=2的方案
34             }
35         }
36     }
37 
38     public static void main(String[] args) {
39         八皇后递归回溯 test=new 八皇后递归回溯();
40         test.reback(1);
41         System.out.println("共"+test.sum+"种方案");
42     }
43 }

回溯算法的原则:不进则退。讲搜索空间看成树,可采用深度优先、广度优先等策略进行搜索,上述所示八皇后采用深度优先策略

 

回溯算法之八皇后问题

标签:style   blog   ar   color   sp   for   div   问题   log   

原文地址:http://www.cnblogs.com/smallby/p/4137809.html

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