本文实例讲述了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小时内与您取得联系。