public class NQueens {  public static int num = 0; // 累计方案总数 public static final int MAXQUEEN = 5;// 皇后个数,同时也是棋盘行列总数 public static int[] cols = new int[MAXQUEEN]; // 定义cols数组,表示n列棋子摆放情况

public NQueens() {  // 核心函数,从第0列开始 getArrangement(0);  System.out.println(MAXQUEEN + 皇后问题有 + num + 种摆放方法。);  }

public void getArrangement(int n) {  // 遍历该列所有不合法的行,并用rows数组记录,不合法即rows[i]=true  boolean[] 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 k = 0; k < MAXQUEEN; k++) {  // 判断该行是否合法 if (rows[k])  continue;  // 设置当前列合法棋子所在行数 cols[n] = k;  // 当前列不为最后一列时 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 );  } else  System.out.print(+ );  }  System.out.println();  }

}

public static void main(String args[]) {  NQueens queen = new NQueens();  } }

java计算八皇后_八皇后java算法相关推荐

  1. java计算何时赶超_网上说 Java 的性能已经达到甚至超过 C++,是真的吗?

    求一个完成中值滤波的纯JAVA代码.我手里正好有一个C++的中值滤波代码,想对比下两者究竟差距多大. @圆胖肿 可否写一个JAVA程序来佐证下你的观点呢? 我这面的C++代码,对一张5184*3456 ...

  2. java计算时间差距_硬计算和软计算之间的差异

    java计算时间差距 什么是计算? (What is Computing?) The process of accomplishing a particular task with the help ...

  3. java教程哪里好_最好的Java教程是什么?

    什么是Java最好的教程? 能够带你入门的叫做好教程?是的,不管教程一什么样的方式去上课,我觉得能够带我顺利入门的教程就是一个很好的教程 其实每个人的意见都不一样,有的会觉得看着开心的才是好教程,有的 ...

  4. java获取机器号_(转)JAVA获得机器码的实现

    http://yangshangchuan.iteye.com/blog/2012401 首先,定义了一个统一的接口,以支持不同操作系统不同实现的透明切换: Java代码  收藏代码 /** *生成机 ...

  5. java整数的因式分解_如何在Java中找到整数的质数-因式分解

    java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...

  6. 新手学java 学哪方面_初学者学Java应从哪些方面学习?

    原标题:初学者学Java应从哪些方面学习? Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.那么,初学者学Java应从哪些方面学 ...

  7. java象棋实验报告_中国象棋java程序设计实验报告

    中国象棋java程序设计实验报告 东北大学秦皇岛分校信息与计算科学系Java 程序设计实验报告专业名称 信 息 与 计 算 科 学班级学号 7080206学生姓名 彭 军指导教师 王 薇完成时间 20 ...

  8. java象棋实验报告_中国象棋java程序设计实验报告.doc

    中国象棋java程序设计实验报告.doc 东北大学秦皇岛分校 信息与计算科学系 Java 程序设计实验报告 专业名称 信息与计算科学 班级学号 7080206 学生姓名 彭 军 指导教师 王薇 完成时 ...

  9. java反编译工具_如何保护Java程序 才能防止Java反编译

    简介:Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如 ...

  10. java date加月_如何在Java中向当前日期添加一个月?

    LocalDate::plusMonths 例: LocalDate.now( ) .plusMonths( 1 ); 最好指定时区. LocalDate.now( ZoneId.of( " ...

最新文章

  1. RDKit | 基于RDKit探索ChEMBL数据库中合成药物历史
  2. 腾讯下一个重点:硬件;硬件自身的未来也正进入多元化发展
  3. 全国python一级考试时间_2019年北京全国计算机一级考试时间
  4. DFB [03] 移植遇到的实际问题 基于某著名平台
  5. 第二阶段团队冲刺(五)
  6. 【论文笔记】NLP 预训练模型综述
  7. 查看centos操作系统、java_jdk、hadoop位数
  8. 2.RabbitMQ实战 --- 理解消息通信
  9. tftp服务器默认ip怎么修改,tftp服务器的ip地址
  10. 小程序长按图片识别二维码
  11. Android读取手机存储文件,android 手机存储文件夹学习
  12. 学Python必须懂的例子
  13. 小游戏————坦克大战
  14. HDU-5755-Gambler Bo-高斯消元
  15. 爬虫笔记41之反爬系列四:字体反爬、JS反爬
  16. vue项目报错:warning Disallow self-closing on HTML void elements (<img/>)
  17. 汉信码生成和识别SDK
  18. linux防火墙富规则,[Linux]Redhat7防火墙配置汇总
  19. jlink怎么调试linux程序_Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
  20. 分享几张与互联网相关的搞笑图片

热门文章

  1. java中文字符怎么保证出现正确_JAVA中文字符编码问题详解
  2. QPainter使用整理
  3. 深度学习训练中关于数据处理方式--原始样本采集以及数据增广
  4. 形态学图像处理学习笔记
  5. Requests请求库
  6. Docker与自动化测试及其测试实践
  7. Workshop | 超高效的设计方法你GET了吗?Design Sprint设计冲刺工作坊
  8. 阿里云MVP闪亮云栖大会,技术干货持续更新中
  9. python3实现抓取网页资源的 N 种方法(内附200GPython学习资料)
  10. word2vec中文类似词计算和聚类的使用说明及c语言源代码