資源簡介
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編寫的二手交易系統
評論
共有 條評論