美文网首页
回溯法求八皇后排列方法

回溯法求八皇后排列方法

作者: 光影墨辰 | 来源:发表于2017-10-09 17:11 被阅读0次

    代码如下:

    import java.util.ArrayList;
    
    public class BHH {
        static int count = 0;
        static boolean vis[][] = new boolean[3][30];
        public static void main(String[] args){
            ArrayList<Integer> resu = new ArrayList<>();
            BB(1,resu);
            System.out.println(count);
        }
        
        public static void BB(int cur,ArrayList<Integer> b){
            if(cur == 9){
                count++;
                show(new ArrayList<>(b));
                return;
            }
            for(int i =1 ;i <=8;i++){
                if(!vis[0][i] && !vis[1][cur-i+8] && !vis[2][cur+i]){
                    b.add(i);
                    vis[0][i] = vis[1][cur-i+8] = vis[2][cur+i] = true;
                    BB(cur+1,b);
                    b.remove(b.size() - 1);
                    vis[0][i] = vis[1][cur-i+8] = vis[2][cur+i] = false;
                }
            }
        }
        public static void show(ArrayList<Integer> b){
            System.out.println(b);
        }
    }
    
    

    打印结果如下

    [1, 5, 8, 6, 3, 7, 2, 4]
    [1, 6, 8, 3, 7, 4, 2, 5]
    [1, 7, 4, 6, 8, 2, 5, 3]
    [1, 7, 5, 8, 2, 4, 6, 3]
    [2, 4, 6, 8, 3, 1, 7, 5]
    [2, 5, 7, 1, 3, 8, 6, 4]
    [2, 5, 7, 4, 1, 8, 6, 3]
    [2, 6, 1, 7, 4, 8, 3, 5]
    [2, 6, 8, 3, 1, 4, 7, 5]
    [2, 7, 3, 6, 8, 5, 1, 4]
    [2, 7, 5, 8, 1, 4, 6, 3]
    [2, 8, 6, 1, 3, 5, 7, 4]
    [3, 1, 7, 5, 8, 2, 4, 6]
    [3, 5, 2, 8, 1, 7, 4, 6]
    [3, 5, 2, 8, 6, 4, 7, 1]
    [3, 5, 7, 1, 4, 2, 8, 6]
    [3, 5, 8, 4, 1, 7, 2, 6]
    [3, 6, 2, 5, 8, 1, 7, 4]
    [3, 6, 2, 7, 1, 4, 8, 5]
    [3, 6, 2, 7, 5, 1, 8, 4]
    [3, 6, 4, 1, 8, 5, 7, 2]
    [3, 6, 4, 2, 8, 5, 7, 1]
    [3, 6, 8, 1, 4, 7, 5, 2]
    [3, 6, 8, 1, 5, 7, 2, 4]
    [3, 6, 8, 2, 4, 1, 7, 5]
    [3, 7, 2, 8, 5, 1, 4, 6]
    [3, 7, 2, 8, 6, 4, 1, 5]
    [3, 8, 4, 7, 1, 6, 2, 5]
    [4, 1, 5, 8, 2, 7, 3, 6]
    [4, 1, 5, 8, 6, 3, 7, 2]
    [4, 2, 5, 8, 6, 1, 3, 7]
    [4, 2, 7, 3, 6, 8, 1, 5]
    [4, 2, 7, 3, 6, 8, 5, 1]
    [4, 2, 7, 5, 1, 8, 6, 3]
    [4, 2, 8, 5, 7, 1, 3, 6]
    [4, 2, 8, 6, 1, 3, 5, 7]
    [4, 6, 1, 5, 2, 8, 3, 7]
    [4, 6, 8, 2, 7, 1, 3, 5]
    [4, 6, 8, 3, 1, 7, 5, 2]
    [4, 7, 1, 8, 5, 2, 6, 3]
    [4, 7, 3, 8, 2, 5, 1, 6]
    [4, 7, 5, 2, 6, 1, 3, 8]
    [4, 7, 5, 3, 1, 6, 8, 2]
    [4, 8, 1, 3, 6, 2, 7, 5]
    [4, 8, 1, 5, 7, 2, 6, 3]
    [4, 8, 5, 3, 1, 7, 2, 6]
    [5, 1, 4, 6, 8, 2, 7, 3]
    [5, 1, 8, 4, 2, 7, 3, 6]
    [5, 1, 8, 6, 3, 7, 2, 4]
    [5, 2, 4, 6, 8, 3, 1, 7]
    [5, 2, 4, 7, 3, 8, 6, 1]
    [5, 2, 6, 1, 7, 4, 8, 3]
    [5, 2, 8, 1, 4, 7, 3, 6]
    [5, 3, 1, 6, 8, 2, 4, 7]
    [5, 3, 1, 7, 2, 8, 6, 4]
    [5, 3, 8, 4, 7, 1, 6, 2]
    [5, 7, 1, 3, 8, 6, 4, 2]
    [5, 7, 1, 4, 2, 8, 6, 3]
    [5, 7, 2, 4, 8, 1, 3, 6]
    [5, 7, 2, 6, 3, 1, 4, 8]
    [5, 7, 2, 6, 3, 1, 8, 4]
    [5, 7, 4, 1, 3, 8, 6, 2]
    [5, 8, 4, 1, 3, 6, 2, 7]
    [5, 8, 4, 1, 7, 2, 6, 3]
    [6, 1, 5, 2, 8, 3, 7, 4]
    [6, 2, 7, 1, 3, 5, 8, 4]
    [6, 2, 7, 1, 4, 8, 5, 3]
    [6, 3, 1, 7, 5, 8, 2, 4]
    [6, 3, 1, 8, 4, 2, 7, 5]
    [6, 3, 1, 8, 5, 2, 4, 7]
    [6, 3, 5, 7, 1, 4, 2, 8]
    [6, 3, 5, 8, 1, 4, 2, 7]
    [6, 3, 7, 2, 4, 8, 1, 5]
    [6, 3, 7, 2, 8, 5, 1, 4]
    [6, 3, 7, 4, 1, 8, 2, 5]
    [6, 4, 1, 5, 8, 2, 7, 3]
    [6, 4, 2, 8, 5, 7, 1, 3]
    [6, 4, 7, 1, 3, 5, 2, 8]
    [6, 4, 7, 1, 8, 2, 5, 3]
    [6, 8, 2, 4, 1, 7, 5, 3]
    [7, 1, 3, 8, 6, 4, 2, 5]
    [7, 2, 4, 1, 8, 5, 3, 6]
    [7, 2, 6, 3, 1, 4, 8, 5]
    [7, 3, 1, 6, 8, 5, 2, 4]
    [7, 3, 8, 2, 5, 1, 6, 4]
    [7, 4, 2, 5, 8, 1, 3, 6]
    [7, 4, 2, 8, 6, 1, 3, 5]
    [7, 5, 3, 1, 6, 8, 2, 4]
    [8, 2, 4, 1, 7, 5, 3, 6]
    [8, 2, 5, 3, 1, 7, 4, 6]
    [8, 3, 1, 6, 2, 5, 7, 4]
    [8, 4, 1, 3, 6, 2, 7, 5]
    92
    

    相关文章

      网友评论

          本文标题:回溯法求八皇后排列方法

          本文链接:https://www.haomeiwen.com/subject/vtupyxtx.html