全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java基于循环递归回溯实现八皇后问题算法示例

本文实例讲述了Java基于循环递归回溯实现八皇后问题。分享给大家供大家参考,具体如下:

运行效果图如下:

棋盘接口

/**
 * 棋盘接口
 * @author Administrator
 *
 */
public interface Piece {
  abstract boolean isRow(int line);
  abstract boolean isCol(int line,int col);
}

棋盘类:

/**
 * 棋盘
 * @author Administrator
 *
 */
public class Chessboard implements Piece {
  static boolean[][] che = null;
  public int row;
  public int col;
  private int num=0;
  public Chessboard (int row,int col){
    this.che=new boolean[row][col];
    this.row=row;
    this.col=col;
  }
  //当前行是否能放棋子
  public boolean isRow(int line){
    for (int i = 0; i < this.row; i++) {
      if (che[i][line] == true) {
        return false;
      }
    }
    return true;
  }
  //棋子边角
  public boolean isCol(int line,int col){
    int i = 0, j = 0;
    for (i = line, j = col; i < this.row && j < this.row; i++, j++) { //右下角;
      if (che[i][j] == true) {
        return false;
      }
    }
    for (i = line, j = col; i >= 0 && j >= 0; i--, j--) { //左上角;
      if (che[i][j] == true) {
        return false;
      }
    }
    for (i = line, j = col; i >= 0 && j < this.row; i--, j++) { // 右上角;
      if (che[i][j] == true) {
        return false;
      }
    }
    for (i = line, j = col; i < this.row && j >= 0; i++, j--) { //左下角;
      if (che[i][j] == true) {
        return false;
      }
    }
    return true;
  }
  public void pr() {//打印满足条件的摆放方法
    num++;
    System.out.println("第" + num + "种方式");
    System.out.print("-------------start-------------");
    for (int i = 0; i < this.row; i++) {
      System.out.println();
      for (int j = 0; j < this.row; j++) {
        if (che[i][j] == true) {
          System.out.print("Q ");
        } else {
          System.out.print(". ");
        }
      }
    }
    System.out.println();
    System.out.println("-------------end-------------");
  }
}

皇后类

/**
 * 皇后
 * @author Administrator
 *
 */
public class empress {
  private Chessboard che=null;
  private int count=0;
  private int row=0;
  public empress(int row,int col){
    this.che=new Chessboard(row,col);
    this.row=row;
  }
  //主要的递归实现方法
  public void mk(int line) {
    if (line > this.row-1)
      return;//超过行则退出
    for (int i = 0; i < this.row; i++) {
      if (che.isRow(i) && che.isCol(line,i)) { //ture 为可以摆皇后;
        che.che[line][i] = true; //
        count++; //
        if (count > this.row-1) {
          che.pr();//摆放皇后8个则打印结果
        }
        mk(line + 1);//递归
        che.che[line][i] = false; //回溯
        count--;
        continue;
      }
    }
    return;
  }
}

启动:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class start {
  public static void main(String[] args) {
    String inputrow = JOptionPane.showInputDialog("输入行:");
    int row = Integer.parseInt(inputrow);
    String inputcol = JOptionPane.showInputDialog("输入列:");
    int col = Integer.parseInt(inputcol);
    empress emp=new empress(row,col);
    emp.mk(0);
  }
}

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《java日期与时间操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


# Java  # 循环  # 递归  # 回溯  # 八皇后  # 算法  # Java的递归算法详解  # java递归算法的实例详解  # Java递归实现迷宫游戏  # java递归实现汉诺塔步骤介绍  # Java递归来实现汉诺塔游戏  # 注释详细  # Java使用递归回溯完美解决八皇后的问题  # Java通过递归算法解决迷宫与汉诺塔及八皇后问题  # 操作技巧  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 所述  # 是否能  # 程序设计  # 讲述了  # col  # Chessboard  # implements  # isCol  # isRow  # int  # line  # static  # num 


相关文章: 建站之星如何快速更换网站模板?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  建站之星微信建站一键生成小程序+多端营销系统  如何用免费手机建站系统零基础打造专业网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  网站企业制作流程,用什么语言做企业网站比较好?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  香港网站服务器数量如何影响SEO优化效果?  行程制作网站有哪些,第三方机票电子行程单怎么开?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在IIS7上新建站点并设置安全权限?  如何通过VPS搭建网站快速盈利?  如何通过.red域名打造高辨识度品牌网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  网站微信制作软件,如何制作微信链接?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何在自有机房高效搭建专业网站?  python的本地网站制作,如何创建本地站点?  如何快速搭建响应式可视化网站?  重庆市网站制作公司,重庆招聘网站哪个好?  已有域名能否直接搭建网站?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何配置IIS站点权限与局域网访问?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何通过二级域名建站提升品牌影响力?  为什么Go需要go mod文件_Go go mod文件作用说明  岳西云建站教程与模板下载_一站式快速建站系统操作指南  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  教学网站制作软件,学习*后期制作的网站有哪些?  建站之星价格显示格式升级,你的预算足够吗?  如何注册花生壳免费域名并搭建个人网站?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  电商网站制作公司有哪些,1688网是什么意思?  淘宝制作网站有哪些,淘宝网官网主页?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  建站之星如何取消后台验证码生成?  C#怎么使用委托和事件 C# delegate与event编程方法  网站制作免费,什么网站能看正片电影?  如何用西部建站助手快速创建专业网站?  如何用狗爹虚拟主机快速搭建网站?  如何打造高效商业网站?建站目的决定转化率  网站按钮制作软件,如何实现网页中按钮的自动点击?  建站主机是否属于云主机类型?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何获取开源自助建站系统免费下载链接?  测试制作网站有哪些,测试性取向的权威测试或者网站?  官网网站制作腾讯审核要多久,联想路由器newifi官网 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。