package com.company;

/** * Created by Administrator on 2016/9/15. */public class EigthQueue {    private static int N = 8;    private int count = 0; // 总方案数    private int[] flag = {-1, -1, -1, -1, -1, -1, -1, -1};    //回溯法递归实现八皇后问题    //输出棋盘    private void printChessboard(){        int [][]chessboard = new int[N][N];        for ( int i=0; i<N; i++) {            chessboard[i][flag[i]] = 1;        }        for ( int i=0; i<N; i++) {            for ( int j=0; j<N; j++) {                System.out.print(String.format("%d ", chessboard[i][j]));            }            System.out.println();        }    }    private boolean checkQueen(int p){        boolean flag_t = true;        int pv = flag[p];        if ( p==0) {            return flag_t;        }        p--;        for ( int i=1; p>=0; p--, i++) {            if ( flag[p]==pv || flag[p]==pv-i || flag[p]==pv+i) {                flag_t = false;            }        }        return flag_t;    }    public void eightQueen(int p){        for ( int i=0; i<N; i++) {            flag[p] = i;            if ( checkQueen( p)==true && p==7) {                count++;                System.out.println("第" + count + "种:");                printChessboard( );            }            else if ( checkQueen( p ) == true){                eightQueen(p+1);            }        }    }

    public static void main(String[]args){        // 记录开始时间        long a=System.currentTimeMillis();        EigthQueue eigthQueue = new EigthQueue();        eigthQueue.eightQueen(0);        // 记录结束时间        System.out.println("\r<br>执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 ");    }}

转载于:https://www.cnblogs.com/jy10/p/5874798.html

八皇后解法(回溯法)相关推荐

  1. 八皇后问题 回溯法hdu2553

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  2. Bailian2754 八皇后【回溯】

    2754:八皇后 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格) ...

  3. n皇后问题-回溯法求解

    n皇后问题-回溯法求解 1.算法描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. n皇后是由八皇后问题演变而来的.该问题 ...

  4. 八皇后问题、N皇后问题回溯法详解

    /* * 回溯法解N皇后问题 * 使用一个一维数组表示皇后的位置 * 其中数组的下标表示皇后所在的行 * 数组元素的值表示皇后所在的列 * 这样设计的棋盘,所有皇后必定不在同一行 * * 假设前n-1 ...

  5. PHP实现八皇后算法-回溯算法

    回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法,按选优条件向前搜索,以 ...

  6. java递归-八皇后问题(回溯算法)

    1.八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任 ...

  7. Bailian2698 八皇后【回溯】

    2698:八皇后问题 总时间限制: 10000ms 内存限制: 65536kB 描述 在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方. 输入 无输入. 输出 按给定顺序和格式输出所有 ...

  8. n皇后问题(回溯法)

    目录 1.问题描述 2.问题分析 3.完整源码 1.问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的.问题是:在8×8的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同 ...

  9. [C语言]八皇后问题回溯算法

    八皇后问题:在8×8格的国际象棋上摆放八个皇后,任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 将棋盘抽象为4 * 4到20 * 20大小的矩阵 输入样例: 请输入棋盘的大小(4 ...

最新文章

  1. jquery之hide()用法详解
  2. 导入xlsx,文件到sqlite3数据库
  3. 入门demo---Mybatis学习笔记(三)
  4. web后端学习过程中技巧总结(持续更新。。。)
  5. 螺旋桨设计软件_第四届智能工业软件及设计技术研讨会暨2019天洑软件用户大会成功举办...
  6. 石油、黄金与美元的游戏
  7. php1.9,PHP1.9--数组
  8. LeetCode(575)——分糖果(JavaScript)
  9. 易语言卷帘菜单与json_易语言卷帘式菜单组件使用教程
  10. Ionic3.x/Ionic4.x项目实战视频教程
  11. 基于javaweb+jsp的户籍管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
  12. 电脑计算机怎么显示到桌面,怎么显示我的电脑到桌面
  13. 游戏角色设计思路规划路径有哪些?
  14. 【修真院“善良”系列之二】产品经理应该懂哪些术语?
  15. Python爬取英雄联盟英雄皮肤
  16. 使用python将excel单元格中指定文字加粗标红
  17. 计算机解题的过程实际上是实施某种算法,计算机等级考试二级C考点.doc
  18. 日常pytho3练习脚本之--彩票自动选号机
  19. sqlserver 2008 Express离线安装包
  20. css内边距属性、外边距属性

热门文章

  1. SESSION 回收机制
  2. 在Mono 2.8上部署ASP.NET MVC 2
  3. 解说redis中如何实现高可用
  4. NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯
  5. Docker Compose 项目
  6. 插入排序:表折半插入
  7. Angular属性型指令
  8. kettle-实现每个分组的前N的数据
  9. Java常见Jar包的用途
  10. 【svn】设置过滤文件