资源简介
N后问题设计其解空间结构分别为子集树和排列树,并分别用回溯法和分支
限界法来实现。其中N是作为程序的一个参数输入,要求当对于给定的N没有可行解的时候给出信息提示;当有可行解的时候给出二个可行解,并统计获得该可行解的时间。
代码片段和文件信息
package nqueen;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.border.LineBorder;
public class Gui extends Jframe implements ActionListener{
static int co;//排列树
static long tim;//算法花费的时间
static int num;//皇后数量
static int count;//解的总个数
static boolean[] rowExists;//rowExists[i]=true第i行有皇后
boolean[] a;//a[i]=true,第i条/线上有皇后
boolean[] b;//b[i]=true,第i条左向右下降的斜线上有皇后
static int queen[];//queen[col]=row第row行第col列有一个皇后
static int store[][][];//存储每次的解
static JLabel label[][]; //画棋盘
static int tmp;//第几个解
JButton b1b2b3b4b5;
JLabel a1;
JRadioButton c1c2;
ButtonGroup group;
static JTextField t1wrtime;
static JPanel d1d2d3d4d5d6;
public Gui(){
d1 = new JPanel();
d2 = new JPanel();
d3 = new JPanel();
d4 = new JPanel();
d5 = new JPanel();
d6 = new JPanel();
a1 = new JLabel(“请输入皇后个数:“JLabel.CENTER);
b1 = new JButton(“确定“);
b1.addActionListener(this);//加监听
b1.setActionCommand(“yes“);
b2 = new JButton(“下一个解“);
b2.addActionListener(this);
b2.setActionCommand(“next“);
b3 = new JButton(“关闭“);
b3.addActionListener(this);
b3.setActionCommand(“close“);
b4 = new JButton(“刷新“);
b4.addActionListener(this);
b4.setActionCommand(“fresh“);
b5 = new JButton(“上一步“);
b5.addActionListener(this);
b5.setActionCommand(“last“);
group=new ButtonGroup();
c1 = new JRadioButton(“回溯法“);
c1.addActionListener(this);
c2 = new JRadioButton(“分支限界法“);
c2.addActionListener(this);
//t = new TextArea(3040);
t1 = new JTextField(10);
w = new JTextField(10);
r = new JTextField(10);
time = new JTextField(10);
group.add(c1); group.add(c2);
d5.setBorder(BorderFactory.createLineBorder(Color.pink 10) );
d6.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY 10) );
d1.setLayout(new GridLayout(31));
d4.setLayout(new GridLayout(31));
d2.add(d5BorderLayout.WEST);
d2.add(d6);
d1.add(a1); d1.add(w);
d1.add(c1); d1.add(c2);
d1.add(b1); d1.add(b4);
d3.add(b2); d3.add(b3); d3.add(b5);
d4.add(t1); d4.add(r); d4.add(time);
this.add(d1BorderLayout.NORTH);
this.add(d2);
this.add(d3BorderLayout.SOUTH);
this.add(d4BorderLayout.EAST);
this.settitle(“n皇后-排列树“);
this.setSize(1000600);
this.setLocation(22060);
this.setResizable(true);
this.setVisible(true);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
r.setBorder(BorderFactory.createtitledBorder(“解的总个数:“));
time.setBorder(BorderFactory.createtitledBorder(“所需时间:“));
t1.setBorder(BorderFactory.createtitledBorder(“当前已显示的解的个数:“));
}
public void init(){
co = 0;
a = new boolean[num * 2];//初始化大小,斜线数目是皇后数目2倍
b = new boolean[num * 2];
tmp = 1;
rowExists = new boolean[num + 1];//从第一
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 636631 2018-01-07 20:25 N后问题+顾涛+3150608031\3150608031+5.docx
文件 301 2018-01-03 12:10 N后问题+顾涛+3150608031\suanfa\.classpath
文件 382 2018-01-03 12:10 N后问题+顾涛+3150608031\suanfa\.project
文件 598 2018-01-03 12:10 N后问题+顾涛+3150608031\suanfa\.settings\org.eclipse.jdt.core.prefs
文件 8176 2018-01-06 01:45 N后问题+顾涛+3150608031\suanfa\bin\nqueen\Gui.class
文件 8111 2018-01-06 01:45 N后问题+顾涛+3150608031\suanfa\bin\nqueen\HuiZi.class
文件 2371 2018-01-06 14:23 N后问题+顾涛+3150608031\suanfa\bin\nqueen\Tree.class
文件 2142 2018-01-04 22:53 N后问题+顾涛+3150608031\suanfa\bin\nqueen\xianjie_pailie.class
文件 2278 2018-01-04 22:53 N后问题+顾涛+3150608031\suanfa\bin\nqueen\xianjie_ziji.class
文件 1879 2018-01-05 15:40 N后问题+顾涛+3150608031\suanfa\queen.jpg
文件 7910 2018-01-06 01:45 N后问题+顾涛+3150608031\suanfa\src\nqueen\Gui.java
文件 8018 2018-01-06 01:45 N后问题+顾涛+3150608031\suanfa\src\nqueen\HuiZi.java
文件 1576 2018-01-06 14:23 N后问题+顾涛+3150608031\suanfa\src\nqueen\Tree.java
文件 2069 2018-01-04 22:53 N后问题+顾涛+3150608031\suanfa\src\nqueen\xianjie_pailie.java
文件 2216 2018-01-04 22:53 N后问题+顾涛+3150608031\suanfa\src\nqueen\xianjie_ziji.java
文件 44615 2017-01-08 12:32 N后问题+顾涛+3150608031\图表\图1 排列树.vsdx
文件 5585 2017-01-08 14:17 N后问题+顾涛+3150608031\图表\图2 4皇后图例.jpg
文件 65538 2017-01-08 16:13 N后问题+顾涛+3150608031\图表\图3 程序流程图.vsdx
文件 16328 2018-01-07 00:48 N后问题+顾涛+3150608031\图表\图片1.png
文件 55285 2018-01-07 00:48 N后问题+顾涛+3150608031\图表\图片2.png
文件 69000 2018-01-07 00:48 N后问题+顾涛+3150608031\图表\图片3 回溯法—子集树.png
文件 46916 2018-01-07 00:48 N后问题+顾涛+3150608031\图表\图片4.png
文件 69865 2018-01-07 00:49 N后问题+顾涛+3150608031\图表\图片5 回溯法—排列树.png
文件 71953 2018-01-07 00:49 N后问题+顾涛+3150608031\图表\图片6 分支限界法—子集树.png
文件 71231 2018-01-07 00:49 N后问题+顾涛+3150608031\图表\图片7 分支限界法—排列树.png
目录 0 2018-01-07 00:46 N后问题+顾涛+3150608031\suanfa\bin\nqueen
目录 0 2018-01-07 00:46 N后问题+顾涛+3150608031\suanfa\src\nqueen
目录 0 2018-01-07 00:46 N后问题+顾涛+3150608031\suanfa\.settings
目录 0 2018-01-07 00:46 N后问题+顾涛+3150608031\suanfa\bin
目录 0 2018-01-07 00:46 N后问题+顾涛+3150608031\suanfa\src
............此处省略6个文件信息
- 上一篇:Android基于局域网socket通信
- 下一篇:用mysql编写的二手交易系统
评论
共有 条评论