• 大小: 1.1MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-18
  • 语言: Java
  • 标签: 算法课设  

资源简介

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个文件信息

评论

共有 条评论