八皇后java实现
来源:互联网 发布:apache源码包下载 编辑:程序博客网 时间:2024/05/21 10:37
在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
答案是:92种。
下面贴代码:
public class EightQueen {int sum = 0;public static final int MAX = 8;public void showResult(int[] result) {for (int i = 0; i < result.length; i++) {System.out.print((i+1) + "行" + (result[i]+1)+"列 ");}System.out.println();sum++;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] result = new int[MAX];EightQueen queen = new EightQueen();queen.queen(result, 0);System.out.println("total:" + queen.sum);}/* 检查当前行 x 放置的皇后是否正确 */private boolean check(int[] result, int x) {for (int i = 0; i < x; i++) {//遍历前面的 x-1 行放好的皇后,看是否与 x 行的这个冲突if (result[i] == result[x]|| (Math.abs(result[i] - result[x]) == Math.abs(i - x))) {return false;}}return true;}/* 回溯尝试皇后位置,n为横坐标 */private void queen(int[] result, int x) {if(x == MAX){showResult(result);//一共有MAX列,从0开始,所以已近排完,打印结果return;}// 新的一行里面,皇后可以在任何位置:0->max,所以i=0->max,而不是i=n->maxfor(int i = 0; i<MAX ; i++){result[x] = i;//x行的第i列放置皇后if(check(result,x)){queen(result, x+1);//如果这个位置可以,就再继续下一行}//如果不可以,就换成这行的下一个列的位置}}}
0 0
- 八皇后java实现
- 八皇后java实现
- 八皇后 java实现
- 八皇后 java实现
- 八皇后--java实现
- 八皇后问题java实现
- 八皇后 Java算法实现
- 解八皇后java实现
- 八皇后问题的java实现
- 八皇后问题的java 实现
- 八皇后问题的java实现
- Java实现经典八皇后的问题
- java实现八皇后的排列问题
- 八皇后问题(java实现)
- 算法复习 - 八皇后问题(Java实现)
- java实现八皇后可视化输出
- 使用java语言实现八皇后问题
- java实现八皇后问题算法
- 关于PHP Parse Error: syntax error, unexpected $end 错误的解决办法
- 同表Update:根据同表已有记录非Null字段值去匹配填充Null字段值
- 介绍一款最强大的跨平台的集成开发工具SlickEdit2013
- js-DOM[1] 绑定~
- web开发中特殊字符的对应值与转义字符
- 八皇后java实现
- ngrep-sip工具使用
- Struts2里如何取得request,session,application
- openwrt编译内核
- 编程之美格格取数(为什么一直是WA,求测试)
- Hibernate 自动生成bo 映射是 default_schema 引发的问题
- 启动LFS,检测大多是FAIL,启动失败,电脑自动关机,需要重新编译LFS
- UNlit/Transparent 不发光透明shader
- 写COM组件用于ASP/PHP等动态网页