java中经典八皇后难题_Java实现经典八皇后的问题
今天自己实现了八皇后的问题,其实代码并不长,但是关于虚拟机中怎样实现的想了好长时间特别是红色部分。现在还是有点不是很明白。代码如下,已经实现运行。
public class EightQueen {
public static int sum = 0; //累计方法总数
public static final int MAXQUEEN = 8;//皇后个数,同时也是棋盘行列总数
public static int []columnForRow = new int[MAXQUEEN]; //定义数组,表示8列棋子摆放情况
public static void main(String[] args) {
placeQueue(0);
System.out.println();
System.out.println("共有"+sum+"走法。");
}
//检查所放位子是否合法。
public static boolean check(int row){
boolean t=true;
for(int i=0;i
/*
* 放在同一列,绝对值=0;
* 放在对角线,绝对值=1;
* 放在斜对角线,绝对值=-1
**/
int diff=Math.abs(columnForRow[row]-columnForRow[i]);
if ((diff==0)||(diff==row-i)){
t=false;break;
}
}
return t;
}
//放棋子的具体过程。
public static void placeQueue(int row){
if(row==MAXQUEEN){
sum++;
printBoard();
return;
}
for(int i=0;i
columnForRow[row]=i;
if(check(row)){
placeQueue(row+1);
}
}
}
//输出结果
public static void printBoard(){
System.out.println("第"+sum+"个走法:");
for(int i=0;i
for(int j=0;j
if(j!=columnForRow[i]){
System.out.print("+");
}else System.out.print("Q");
}System.out.println();
}
}
}
java中经典八皇后难题_Java实现经典八皇后的问题相关推荐
- Java黑皮书课后题第7章:***7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行、同列、同一对角线)。编写程序显示一个解决方案
7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行.同列.同一对角线).编写程序显示一个解决方案 题目 题目描述 破题 题目 题目描述 ...
- java中必检异常有哪些_Java面试题经典面试题220道(附答案)
Java基础: 1.JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么?== 解读 3. 两个对象的 hashCode() 相同, 那么 equals() 也一定为 true ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常
异常处理是java语言的重要特性之一,<Three Rules for effective Exception Handling>一文中是这么解释的:它主要帮助我们在debug的过程中解决 ...
- java中什么是线程安全_Java 多线程:什么是线程安全性
线程安全性 什么是线程安全性 <Java Concurrency In Practice>一书的作者 Brian Goetz 是这样描述"线程安全"的:"当多 ...
- java中无限循环的方法_Java中的无限循环
Java中的无限循环 在Java中查看下面的无限while循环. 它会导致它下面的语句编译时错误. while(true) { System.out.println("inside whil ...
- java中的for语句格式_Java中foreach循环语句的格式可以写成( )。
[其它]1) 了解. 收集.整理 原研哉生平.设计理念及经典代表作 (可交) 2) google baidu 简洁的页面 丰富的变化 收集 (可交 ) [单选题]ABS 塑料通常用于 Jaguar L ...
- java中的匿名类方法覆盖_Java技巧:用匿名类来实现简化程序调试
Java技巧:用匿名类来实现简化程序调试 在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle).但其实,它们对于debug也很有帮助.本文将 ...
- java中用于选择按钮的语句_java程序员考试套题1
Java练习一 一.选择题 1.在Java中,下列()方法可以把JFrame对象jFrame的布局管理器设为FlowLayout 类型. A.jFrame.setLayout(new FlowLayo ...
最新文章
- gridview列 数字、货币和日期 显示格式
- 如果你还记得我[转载]
- LeetCode ZigZag Conversion
- Python学习笔记:Day14 完成Web App
- linux之路由知识之ip route 命令中的疑惑
- firfox 和 chrome 移动端Web开发页面调试
- verilog加法器_【HDL系列】Kogge-Stone加法器原理与设计
- 问题 G: Search Problem (IV)
- nbu备份nas文件服务器,NBU备份恢复实践
- HTML注释和js注释,js 注释
- vmware虚拟机添加物理网卡与虚拟网卡
- 其它——简历编写、五险一金、补充一些就业相关的东西
- 7.1 我的质量之旅
- SQLSERVER2005发送邮件
- 网站分析-网站流量分析
- makefile写法整理
- android room 主线程,Android Jetpack之Room篇
- 基于机器学习算法的LTE高投诉小区预判方法
- VB.net中字符串转16进制,string转byte,串口发送文本直接转16进制数据
- 计算机专业博士毕业月薪多少一般,博士毕业月薪多少一般 好找工作吗