首页 / JAVA / 用Java实现一些常见的问题
用Java实现一些常见的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用Java实现一些常见的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2192字,纯文字阅读大概需要4分钟。
内容图文
![用Java实现一些常见的问题](/upload/InfoBanner/zyjiaocheng/1110/0d4b920d84af43deb07a23374bf4c12d.jpg)
八皇后
1 public class EightQueen { 2 3 private static final int ROW = 4; 4privatestaticfinalint COL = 4; 5 6privatestaticint count = 0; // 八皇后的解的个数 7 8privatestaticboolean[][] maps = newboolean[ROW][COL]; // 初始化二维数组,模拟8*8棋盘,默认值是false表示没有皇后 910// 如何去放皇后?11/**12 * 放置第row行的皇后 13 * @param row 从第0行开始放皇后 14*/15publicstaticvoid putQueen(int row) { 1617// 递归的出口18if (row == ROW) { // row=8时,已经到了第9行,那么前面的8行就是OK的19 printQueen(); 20return; 21 } 2223// 把皇后放到第row行的第j列24for (int j = 0; j < COL; j++) { 25// 如果可以放,就将皇后放在该点26if (isOK(row, j)) { 27 maps[row][j] = true; 28 putQueen(row + 1); // 该行放好之后放下一行【递归去放皇后】,算法已经跳转29 maps[row][j] = false; // 回溯,当放row+1行棋子不满足的时候,会回溯到第row行30 } 31 } 32 } 3334// 如果要将皇后放在(x,y)点,则需要先判断该点是否可以放35publicstaticboolean isOK(int x, int y) { 3637// 遍历二维数组,判断4个方向是否存在皇后38for (int i = 0; i < ROW; i++) { 39for (int j = 0; j < COL; j++) { 40// 正斜边x-y定值,逆斜边x+y为定值41if (i == x || j == y || i - j == x - y || i + j == x + y) { 42// 判断4个方向是否存在皇后43if (maps[i][j]) { // 如果该点放了一个皇后,则返回false44returnfalse; 45 } 46 } 47 } 48 } 4950returntrue; 51 } 5253publicstaticvoid printQueen() { 5455 System.out.println("第" + (++count) + "个解"); 56 System.out.println("*******************"); 57for (int i = 0; i < ROW; i++) { 58for (int j = 0; j < COL; j++) { 59if (maps[i][j]) { 60 System.out.print("Q "); 61 } else { 62 System.out.print("* "); 63 } 64 } 65 System.out.println(); 66 } 67 } 6869/**70 * 穷举法求4皇后 71*/72privatestaticvoid Queen(){ 7374for(int i = 0;i < 4;++i) 75for(int j = 0;j < 4;++j) 76for(int k = 0;k < 4;++k) 77for(int m = 0; m < 4;++m) 78if (!conflusion(i,j,k,m)){ 79 System.out.println("["+i+","+j+"," + k + "," + m +"]"); 80 } 8182 } 8384privatestaticboolean conflusion(int i, int j, int k, int m) { 8586return j == i || k == i || m == i || k == j || m == j || k == m 87 || Math.abs(i - j) == 1 || Math.abs(i - k) == 2 88 || Math.abs(i - m) == 3 || Math.abs(j - k) == 1 89 || Math.abs(j - m) == 2 || Math.abs(k - m) == 1; 90 } 9192publicstaticvoid main(String[] args) { 9394 System.out.println("回溯法求解4皇后"); 95 putQueen(0); // 从第0行开始放皇后96 System.out.println("穷举法求解4皇后"); 97 Queen(); 98 } 99 }
原文:http://www.cnblogs.com/happyfans/p/4510019.html
内容总结
以上是互联网集市为您收集整理的用Java实现一些常见的问题全部内容,希望文章能够帮你解决用Java实现一些常见的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。