递归与回溯:八皇后问题
来源:互联网 发布:淘宝app比网页安全多少 编辑:程序博客网 时间:2024/05/16 08:04
使用回溯方法解决八皇后问题:
/** * 回溯法 * @author acer * */public class Queens {final boolean available=true;final int squares=4,norm=squares-1;int[] positionInRow=new int[squares];boolean[] column=new boolean[squares];boolean[] leftDiagonal=new boolean[squares*2-1];boolean[] rightDiagonal=new boolean[squares*2-1];public Queens(){for(int i=0;i<squares;i++){positionInRow[i]=-1;column[i]=available;}for(int i=0;i<2*squares-1;i++){leftDiagonal[i]=rightDiagonal[i]=available;}}public void printBoard(){for(int row=0;row<squares;row++){for(int col=0;col<squares;col++){if(positionInRow[row]==col){System.out.print("1");}else{System.out.print("0");}}System.out.println();}}/** * 回溯法放置皇后 * @param row */public void putQueen(int row){for(int col=0;col<squares;col++){if(column[col]==available&&leftDiagonal[row+col]==available&&rightDiagonal[row-col+norm]==available){positionInRow[row]=col;column[col]=!available;leftDiagonal[row+col]=!available;rightDiagonal[row-col+norm]=!available;if(row<squares-1){putQueen(row+1);}//回溯时取走皇后column[col]=available;leftDiagonal[row+col]=available;rightDiagonal[row-col+norm]=available;}}}public static void main(String[] args) {Queens queens=new Queens();queens.putQueen(0);queens.printBoard();}}
0 0
- 递归与回溯:八皇后问题
- 递归回溯--八皇后问题
- 八皇后问题(递归回溯)
- 八皇后问题|递归|回溯
- 八皇后问题---递归回溯
- 八皇后问题算法(回溯与递归算法)
- 递归与回溯之经典八皇后问题
- 八皇后问题 回溯递归 C语言版
- 八皇后问题递归回溯算法实现
- 八皇后问题 回溯递归 -C++
- 八皇后问题(递归+回溯)
- 八皇后问题(递归+回溯)
- 八皇后问题 -- 递归,回溯算法
- 递归回溯之八皇后问题
- 八皇后问题(回溯 递归)
- 八皇后问题 回溯 非递归 java
- 八皇后问题回溯递归C++实现
- 八皇后问题(递归+回溯法)
- Java将Unicode转中文
- Ext.net grid選擇一行進行修改,刪除
- 结合Wireshark分析DNS 协议
- spring的JdbcTemplate、NamedParameterJdbcTemplate和SimpleJdbcTemplate
- iOS-Core-Animation-Advanced-Techniques(六)
- 递归与回溯:八皇后问题
- JS中innerHTML,innerText,value
- 对象的上转型对象
- 使用Cufon技术实现Web自定义字体
- 随便写写
- 判断一个数是否为质数
- WPS API
- 开发中遇到Fragment中onActivityResult不响应的问题,
- iOS-Core-Animation-Advanced-Techniques(七)