/*** 八皇后* @Author:yangle* @Date:2020/9/23* @version:1.0*/
public class test {public static int num = 0; //累计方案总数public static final int MAXQUEEN = 8;//皇后个数,同时也是棋盘行列总数public static int[] cols = new int[MAXQUEEN]; //定义cols数组,表示8列棋子摆放情况public test() {//核心函数getArrangement(0);System.out.print("");System.out.println(MAXQUEEN+"有"+num+"种摆放方法.");}public void  getArrangement(int n){//遍历该列所有不合法的行,并用rows数组记录,不合法即rows[i]=trueboolean[] rows = new boolean[MAXQUEEN];for(int i=0;i<n;i++){rows[cols[i]]=true;int d = n-i;if(cols[i]-d >= 0)rows[cols[i]-d]=true;if(cols[i]+d <= MAXQUEEN-1)rows[cols[i]+d]=true;}for(int i=0;i<MAXQUEEN;i++){//判断该行是否合法if(rows[i])continue;//设置当前列合法棋子所在行数cols[n] = i;//当前列不为最后一列时if(n<MAXQUEEN-1){getArrangement(n+1);}else{//累计方案个数num++;//打印棋盘信息printChessBoard();}}}public void printChessBoard(){System.out.println("第"+num+"种走法");for(int i=0;i<MAXQUEEN;i++){for(int j=0;j<MAXQUEEN;j++){if(i==cols[j]){System.out.print("0 ");}elseSystem.out.print("+ ");}System.out.println();}}public static void main(String args[]){test queen = new test();}}

java编写八皇后算法相关推荐

  1. 【使用Java编写的B*算法】

    使用XP系统之家Java编写的B*算法 package rpg.stage.path; import java.util.ArrayList; import java.util.HashSet; im ...

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

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

  3. 算法与数据结构(Java解八皇后问题)

    八皇后问题 思路: 八个皇后互不冲突,即同一行同一列只能出现一位皇后.以行为标准,每一行只能放入一位皇后.可以使用一个一维数组来表示皇后的位置,一维数组的下表表示行数,一维数组中的元素表示列数. in ...

  4. Java基础记忆12(八皇后算法和五子棋玩法)

    首先,在国际象棋中.八皇后是8*8棋盘,其中皇后可以直线行走,可以斜线行走,不分上下左右格数的. 附可行摆法: 所以,可归纳问题的条件为,8皇后之间需满足: 1.不在同一行上              ...

  5. Java实现八皇后问题的解法(一维数组版本)

    最近接触了数据结构与算法,这本该是计算机专业的同学大一就掌握的课程,可我现在才算正式接触,感到惭愧万分.但闻道有先后,术业有专攻.本篇博客开始记录本人学习数据结构与算法这门课的点滴,希望自己能坚持下去 ...

  6. 八皇后算法python_Python学习二(生成器和八皇后算法)

    看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...

  7. 用java实现八皇后问题_使用java语言实现八皇后问题

    八皇后问题,在一个8X8的棋盘中,放置八个棋子,每个棋子的上下左右,左上左下,右上右下方向上不得有其他棋子.正确答案为92中,接下来用java语言实现. 解: package eightQuen; / ...

  8. 前端开发:JS中关于八皇后算法的使用

    前言 在前端开发过程中,关于算法的使用也是非常常见的操作,尤其是处理一些复杂的业务场景,还有就是前端获取到后端返回的复杂结构的数据,所以说前端开发中处处都有算法使用的场景.开发者从接触编程开发开始,就 ...

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

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

最新文章

  1. WebAPI 2.x中如何扩展Identity Store
  2. python整理excel数据-python操作excel的技巧整理
  3. PAT-B 1007.素数对猜想
  4. YIFullScreenScroll
  5. 计算机设计文献参考,优秀计算机设计论文参考文献 计算机设计论文参考文献数量是多少...
  6. Up or out!!!
  7. python旋转数组_Python3实现旋转数组的3种算法
  8. 惠普ns1005w使用说明_惠普 NS1005w 多功能一体机解析:15秒智能闪充 + 全功能手机操控...
  9. Think in Java第四版 读书笔记1
  10. c语言python零基础教学_编程零基础应当如何开始学习 Python?
  11. acrobat xi pro 简体中文语言支持包_恐龙模拟新作《Paleo Pines》Steam明年发售 支持简中...
  12. Vue中mintui的field组件的blur和focus事件
  13. 常用chrome插件常用FireFox插件
  14. ExtJS 教程目录
  15. 模电、数电、电路面试题
  16. Java中的双重检查(Double-Check)详解
  17. *** Error 65: Access violation at 0x00000004 : No 'write' permission
  18. 【转】Ogre 1.7版本重大改进by 诡辩
  19. Oracle中字符串截取最全方法总结
  20. mysql连接navicat premium 15的具体方法 附navicat的官网连接

热门文章

  1. 模拟电路的 PCB设计规则
  2. SpringCloud学习一(微服务远程调用案例:入门)
  3. linux kernel pwn学习之hijack prctl
  4. Linux系统监控:存储器层次结构
  5. 数据挖掘与数据分析的主要区别
  6. 无法启动python 因为计算机中丢失,win7 64位 python启动报错:无法启动此程序,因为计算机中丢失api-ms-win-crt-process-l1-1-0.dll...
  7. 山东大学2018级操作系统实验二
  8. 为什么涨工资的是我和他~~因为看重,所以优待
  9. 初学者笔记——微信小程序点击图片放大
  10. R语言绘图—热图绘制