八皇后问题:在一个8×8的棋盘中,放入8个皇后棋子,要求同行同列同斜线不能有重复的皇后棋子,八皇后问题一共有92种解法。如图所示:即八皇后问题的一个解。

//分治回溯算法解决八皇后问题
public class NQueen {private static int count = 0; //表示第count个解private static int N = 8; //表示N皇后 也表示矩阵的尺寸private static int[][] arr = new int[N][N]; //表示矩阵public static void main(String[] args) {queen(0); //填入皇后棋子}//填入皇后棋子 row表示第几行 从第0行开始private static void queen(int row) {if(row == N){ //判断递归的边界条件count++;System.out.println("第" + count + "个解");printArr(); //输出矩阵}//如果没有到边界条件 就要循环遍历当前行的全部列 向符合条件位置添加皇后for(int col = 0; col < N; col++){if(!isDangerous(row, col)){ //判断当前位置是否是危险位置 即正上方 右上方 左上方有皇后的位置 为危险位置for(int c = 0; c < N; c++){ //在添加皇后之前 要先清空当前行arr[row][c] = 0;}arr[row][col] = 1; //向符合条件的位置添加皇后queen(row + 1); //向下一行继续递归}}}//判断当前位置是否是危险的位置 true表示危险位置 false表示安全位置 可以添加皇后private static boolean isDangerous(int row, int col) {//判断正上方是否存在皇后for(int r = row - 1; r >= 0; r--){if(arr[r][col] == 1){return true;}}//判断左上方是否存在皇后for(int r = row - 1, c = col - 1; r >= 0 && c >= 0; r--, c--){if(arr[r][c] == 1){return true;}}//判断右上方是否存在皇后for(int r = row - 1, c = col + 1; r >= 0 && c < N; r--, c++){if(arr[r][c] == 1){return true;}}return false;}//输出矩阵private static void printArr() {for(int i = 0; i < N; i++){for(int j = 0; j < N; j++){System.out.print(arr[i][j] + " ");}System.out.println();}}
}

分治回溯算法----八皇后问题相关推荐

  1. 回溯算法(八皇后问题)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  2. 学习笔记-回溯算法(八皇后问题)暴力法

    八皇后问题暴力解决法(介绍代码有说明) 先展示结果: 我这里用的是一维数组来展示的结果 array={7,3,0,2,5,1,6,4} 7的下标为0, 在这里下标+1表示的是第几个皇后也是行的位置,a ...

  3. 【算法】递归|迷宫回溯问题|八皇后问题

    [算法]递归|迷宫回溯问题|八皇后问题   迷宫回溯问题,要用动态的眼光来看待这个递归算法. package com.serein.recursion;/*** @author baichuan* @ ...

  4. 回溯算法n皇后问题_使用回溯算法的N Queen问题和解决方案

    回溯算法n皇后问题 N-皇后问题 (N - Queen's problem) The n – queen problem is the generalized problem of 8-queens ...

  5. 【Java数据结构与算法】第五章 递归、迷宫回溯和八皇后问题

    第五章 递归 文章目录 第五章 递归 一.递归 1.概念 2.代码实现 3.递归的规则 二.迷宫回溯 1.要求 2.代码实现 三.八皇后问题 1.介绍 2.思路 3.代码实现 一.递归 1.概念 简单 ...

  6. 递归/回溯:八皇后问题N-Queens

    N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国 际西洋棋棋手马克斯·贝瑟尔于提出了8皇后问题. 将N个皇后放摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆 放 ...

  7. 递归回溯解决八皇后问题

    文章目录 前言 八皇后问题 问题解析 代码实现 完整代码 前言 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇 ...

  8. 使用回溯算法分析八皇后问题

    一. 八皇后问题? 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法? 二.思路 1.首先如何解决递归问题呢? *找到递推公式* ...

  9. 回溯递归算法----八皇后问题

    前,有皇帝.就拿八皇后.由此产生的一系列问题,凌乱.由此产生的八皇后问题.哈哈 开玩笑~~~~ 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848 ...

最新文章

  1. Scanpy(二)对PBMC3k聚类
  2. 2019面试跳槽回顾和一点感想
  3. Oracle使用数据泵 (expdp/impdp)实施迁移
  4. 基于注解使用MyBatis
  5. 【案例实战】餐饮企业分店财务数据分析系统解决方案:业务需求
  6. HDU2546 饭卡【贪心+0-1背包】
  7. 黑群晖 linux 修改参数,黑群晖 DS918+ 修改引导参数隐藏引导盘和数据盘
  8. 关于mysql数据库行级锁的使用(一)
  9. Sql Server2005 Transact-SQL
  10. 画三线格子的高效方法,不用再一个格子一个格子的选中啦
  11. mysql 勒索病毒怎么恢复_敲诈者病毒解密恢复 勒索病毒数据库恢复 数据库中病毒解密恢复...
  12. Python学习笔记(7)文件读写2 Numpy
  13. c语言输入身高输出标准体重,项目2:就拿胖子说事---(4)计算出标准体重,输出体重状态(正常/超重/超轻)...
  14. 做外贸如何免费申请企业邮箱?
  15. linux学校_济南教师招聘 |济南市益友培训学校7大岗位教师招聘(月薪4k15k、包住)...
  16. python 逆序_python中逆序
  17. 高情商的人都在这样表现汇报工作
  18. 笔记本显示宽带无法连接服务器,笔记本电脑连接不上网络怎么解决
  19. 网易再次下注10亿元,能在视频领域“砸”出水花吗
  20. android studio实验二 Activity及常用布局和控件的使用

热门文章

  1. 在pytorch 中实现真正的 pairwise distances
  2. 菜单栏隐藏 | CSDN创作打卡
  3. python输出多个占位符_Python——占位符 打印名片
  4. 所罗门群岛必试体验:去Uepi潜水
  5. Linux下双屏显示设置
  6. 微信小程序之条形码和二维码生成
  7. 等差数列和特殊矩阵压缩公式/下标计数公式的应用
  8. 孙正义软银帝国的新投资, 英伟达, ARM, ONEWEB
  9. 滚珠丝杠与滚柱丝杠区别
  10. 读取图片并转为numpy数组