首页 > 编程语言 > 详细

回溯算法--8皇后问题(用4*4方便看步骤)

时间:2021-03-02 14:34:12      阅读:15      评论:0      收藏:0      [点我收藏+]
 1 package DiGui;
 2 
 3 import java.lang.reflect.Array;
 4 
 5 /*
 6  * 利用递归实现8皇后问题
 7  */
 8 public class EightQueen {
 9     
10     
11     int max=4;
12     int []array=new int[max];
13     static int count=0;
14     
15     
16     public static void main(String[] args){
17         
18         EightQueen q=new EightQueen();
19         q.setQueen(0);
20         System.out.println(count);
21         
22     }
23     
24     
25     
26     
27     public void print(){
28         for(int i=0;i<array.length;i++){
29             System.out.print(array[i]+" ");
30         }
31         System.out.println();
32     }
33     
34     
35     //判断当前皇后是否和之前已经摆好的的任意一个皇后在同一列或者同一斜线上。是的话返回false,否则返回true
36     public boolean judge(int n){
37         for(int i=0;i<n;i++){
38             if(array[n]==array[i]||Math.abs(n-i)==Math.abs(array[n]-array[i])){
39                 return false;
40             }
41         }
42         return true;
43     }
44     
45     
46     //将皇后从0-7逐个放置入相应的符合规定的位置
47     public void setQueen(int n){
48         if(n==max){
49             print();
50             count++;
51             return;
52         }
53         for(int i=0;i<max;i++){
54             array[n]=i;
55             System.out.println("第"+n+"行"+"----------第"+i+"列");
56             if(judge(n)){
57                 System.out.println("第"+n+"行"+"************第"+i+"列");
58                 setQueen(n+1);
59             }
60         }
61     }
62 }

运行结果:

第0行----------第0列
第0行************第0列
第1行----------第0列
第1行----------第1列
第1行----------第2列
第1行************第2列
第2行----------第0列
第2行----------第1列
第2行----------第2列
第2行----------第3列
第1行----------第3列
第1行************第3列
第2行----------第0列
第2行----------第1列
第2行************第1列
第3行----------第0列
第3行----------第1列
第3行----------第2列
第3行----------第3列
第2行----------第2列
第2行----------第3列
第0行----------第1列
第0行************第1列
第1行----------第0列
第1行----------第1列
第1行----------第2列
第1行----------第3列
第1行************第3列
第2行----------第0列
第2行************第0列
第3行----------第0列
第3行----------第1列
第3行----------第2列
第3行************第2列
1 3 0 2
第3行----------第3列
第2行----------第1列
第2行----------第2列
第2行----------第3列
第0行----------第2列
第0行************第2列
第1行----------第0列
第1行************第0列
第2行----------第0列
第2行----------第1列
第2行----------第2列
第2行----------第3列
第2行************第3列
第3行----------第0列
第3行----------第1列
第3行************第1列
2 0 3 1
第3行----------第2列
第3行----------第3列
第1行----------第1列
第1行----------第2列
第1行----------第3列
第0行----------第3列
第0行************第3列
第1行----------第0列
第1行************第0列
第2行----------第0列
第2行----------第1列
第2行----------第2列
第2行************第2列
第3行----------第0列
第3行----------第1列
第3行----------第2列
第3行----------第3列
第2行----------第3列
第1行----------第1列
第1行************第1列
第2行----------第0列
第2行----------第1列
第2行----------第2列
第2行----------第3列
第1行----------第2列
第1行----------第3列
2

回溯算法--8皇后问题(用4*4方便看步骤)

原文:https://www.cnblogs.com/Leeyoung888/p/14468367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!