/*
* 作者:LCQiong
* 问题:N皇后的棋盘排列
* 使用的方法:人工智能――启发式修补法;
* 步骤:1、随机生成每一行皇后的位子;
* 2、计算一行中,每个位子受到其他皇后的攻击数;
* 3、选取最小攻击数的位子放置皇后;
* 4、循环2-3步,直到将N个皇后全部遍历一遍;
* 5、检查结果是否符合要求;如果不符合要求,则重新由第一步做起;
* 6、输出结果;
*/
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.util.Random;
/*
*
* @author lichunqiong
* 解决N皇后的问题;
*/
public class EQueen extends JFrame{
private static int iniqueen=0;//皇后的个数;
private static int[][] queens;//棋盘的格子(数组);
private static int seep=25;//随机数的种子值;
private JTextArea textArea;
/**
* 主函数
* @param args
*/
public static void main(String args[]) {
try {
EQueen frame = new EQueen();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 生成界面信息;
*/
public EQueen(){
super("N皇后问题(使用启发式修改法)");
getContentPane().setLayout(null);
setBounds(150, 150, 500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//label标签;
final JLabel label_1 = new JLabel();
label_1.setText("请输入皇后的个数:");
label_1.setBounds(15, 15, 120, 20);
getContentPane().add(label_1);
//textFeil文本框;