Java实现经典八皇后的问题
2014-08-20 14:18
441 查看
今天自己实现了八皇后的问题,其实代码并不长,但是关于虚拟机中怎样实现的想了好长时间特别是红色部分。现在还是有点不是很明白。代码如下,已经实现运行。
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<row;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){ <span style="color:#ff0000;">if(row==MAXQUEEN){ sum++; printBoard(); return; }</span> for(int i=0;i<MAXQUEEN;i++){ columnForRow[row]=i; if(check(row)){ placeQueue(row+1); } } } // 输出结果 public static void printBoard(){ System.out.println("第"+sum+"个走法:"); for(int i=0;i<MAXQUEEN;i++){ for(int j=0;j<MAXQUEEN;j++){ if(j!=columnForRow[i]){ System.out.print("+"); }else System.out.print("Q"); }System.out.println(); } } }
相关文章推荐
- 经典线程同步问题(生产者&消费者)--Java实现
- 经典线程同步问题(生产者&消费者)--Java实现
- 八皇后问题java实现
- 经典算法问题的Java实现
- Java基于循环递归回溯实现八皇后问题算法示例
- 八皇后问题之回溯算法实现<java实现>
- java多线程实现生产者与消费者---经典问题
- 动态规划经典问题Java实现
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
- 动态规划经典问题Java实现
- java多线程总结六:经典生产者消费者问题实现
- 经典算法问题的java实现<二>
- 多线程经典案例——生产者/消费者问题的Java实现与详解
- 多线程经典问题之生产者消费者问题的JAVA实现
- 八皇后问题的java 实现
- 经典线程同步问题(生产者&消费者)--Java实现
- java多线程总结六:经典生产者消费者问题实现
- 经典算法问题的java实现<一>
- 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】
- 经典问题生产者与消费者java并发线程模拟实现