八皇后—Java

时间:2022-12-20 17:04:56

package queen;

public class queen {

  static boolean col[] = new boolean[8];

  static boolean main_diagonal[] = new boolean[15];

  static boolean counter_diagonal[] = new boolean[15];

  static int record[]=new int[8];

  static int count = 0;

  public static void search(int x) {

    for (int i = 0; i < 8; i++) {

      if (col[i] == false && main_diagonal[i - x + 7] == false && counter_diagonal[i + x] == false) {//这里的判断条件是列可用,主对角线可用,次对角线可用

        record[x]=i;//记录当前列号

        if (x == 7) {//当最后一个安全位置被确定之后,进行计数并画出图像

          count++;

          for (int k = 0; k < 8; k++) {

            for(int j=0;j<8;j++){

              if (j==record[k]) {

                System.out.print("Q");

              }

              else System.out.print("*");

            }

            System.out.println("");

          }

          System.out.println("\n");

          return;//这里的return尤为重要

        }

        col[i] = true;

        main_diagonal[i - x + 7] = true;

        counter_diagonal[i + x] = true;

        search(x + 1);//递归至下一层

        col[i] = false;//回溯时需要解标记

        main_diagonal[i - x + 7] = false;

        counter_diagonal[i + x] = false;

      }

       else//如果当前位置不安全,继续向本行下一个位置遍历

      continue;

    }

  }

  public static void main(String[] args) {

    search(0);

    System.out.println("共有"+count+"解法");

  }

}

八皇后—Java的更多相关文章

  1. 八皇后java算法

    import java.util.Date; public class EightQueen { public static void main(String[] args) {  long star ...

  2. 八皇后问题java实现

    八皇后问题java实现 public class eightqueen { public static int count=0; public static void main(String[] ar ...

  3. 使用java语言实现八皇后问题

    八皇后问题,在一个8X8的棋盘中,放置八个棋子,每个棋子的上下左右,左上左下,右上右下方向上不得有其他棋子.正确答案为92中,接下来用java语言实现. 解: package eightQuen; / ...

  4. Java编程思想—八皇后问题(数组法、堆栈法)

    Java编程思想-八皇后问题(数组法.堆栈法) 实验题目:回溯法实验(八皇后问题) 实验目的: 实验要求: 实验内容: (1)问题描述 (2)实验步骤: 数组法: 堆栈法: 算法伪代码: 实验结果: ...

  5. 算法学习 八皇后问题的递归实现 java版 回溯思想

    1.问题描述 八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或 ...

  6. Java实现蓝桥杯 算法提高 八皇后 改

    **算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ...

  7. java实现八皇后问题&lpar;递归和循环两种方式&rpar;

    循环方式: package EightQueens;   public class EightQueensNotRecursive { private static final boolean AVA ...

  8. 比赛组队问题 --- 递归解法 --- java代码 --- 八皇后问题

    两队比赛,甲队为A.B.C3人,乙队为X.Y.Z3人.已知A不和X比,C不和X.Z比,请编程序找出3队赛手名单 采用了与八皇后问题相似的解法,代码如下: 如有疑问请链接八皇后问题的解法:http:// ...

  9. 八皇后问题 --- 递归解法 --- java代码

    八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上.八皇后 ...

随机推荐

  1. 函数return&sol;获取元素样式&sol;封装自己的库

    一:函数return <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&qu ...

  2. c&plus;&plus; 字符窜切割

    std::vector<std::string> Tools::SplitStr(const char* baseStr, const char* rule) { log("ba ...

  3. Spring使用总结

    一.基础JAR包 spring-beans.jar spring-context.jar spring-core.jar spring-expression.jar 二.XML的配置 1.一级结构 & ...

  4. 【转】linux中的sort命令

    转自:http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分 ...

  5. 在Mac OS 中显示和隐藏系统文件

    使用终端 输入以下代码 defaults write com.apple.finder AppleShowAllFiles -bool YES 来显示隐藏了的文件 如usr/bin 把YES改成NO ...

  6. 从矩阵的定义开始谈OpenGL矩阵变换

    前言 最近自己想用C语言写一个Minecraft clone(GitHub链接:http://github.com/CharlesDong/m3c/),因为是现代OpenGL,又是C语言,GLM用不了 ...

  7. python批量重命名【截取文件名前六个字符 】

    #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 打开文件 path = "/home/landv/Desktop/l/& ...

  8. OO期末总结

    $0 写在前面 善始善终,临近期末,为一学期的收获和努力画一个圆满的句号. $1 测试与正确性论证的比较 $1-0 什么是测试? 测试是使用人工操作或者程序自动运行的方式来检验它是否满足规定的需求或弄 ...

  9. git 提交解决冲突&lpar;转载&rpar;

    转载 git 提交解决冲突 http://www.cnblogs.com/qinbb/p/5972308.html   一:git命令在提交代码前,没有pull拉最新的代码,因此再次提交出现了冲突. ...

  10. K2助力大鹏绿色环保之路

    K2和大鹏结缘可以追溯到2006年,两家践行绿色环保理念的公司一拍即合,开始了十余年的合作之路,在“绿色环保”的路上留下了坚实的脚印. 绿色能源:LNG   广东大鹏液化天然气有限公司成立于2004年 ...