⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queensdisplay.java

📁 利用随机算法和回溯法实现8皇后问题
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
public class QueensDisplay extends JFrame implements ActionListener{

	/**
	 * @param args
	 */
	
	JLabel label1;
	JLabel label2;
	JTextField tField1;
	JTextField tField2;
	JButton button1;
	JTextArea text1;
	String newline;
	
	public QueensDisplay(){
		Container pane1 = new JPanel();
		Container pane2 = new JPanel();
		Container pane3 = getContentPane();		
		pane1.setLayout(new GridLayout(2,2));
		pane2.setLayout(new GridLayout(1,2));
		pane3.setLayout(new BorderLayout());
		
		label1 = new JLabel("	皇后数目:");
		label2 = new JLabel("	重复次数:");
		tField1 = new JTextField();
		tField2 = new JTextField();
		button1 = new JButton("开始");
		text1 = new JTextArea();
		text1.setFont(new Font("Serif",Font.ITALIC,16));
		JScrollPane scrollPane = new JScrollPane(text1);
		
		newline = System.getProperty("line.separator");
		
		
		tField1.addActionListener(this);
		tField2.addActionListener(this);
		button1.addActionListener(this);
		
		pane1.add(label1);
		pane1.add(tField1);
		pane1.add(label2);
		pane1.add(tField2);
		
		pane2.add(pane1);
		pane2.add(button1);
		
		pane3.add(pane2,BorderLayout.NORTH);
		pane3.add(scrollPane,BorderLayout.CENTER);
		
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
	}
	
	public void actionPerformed(ActionEvent e){
		Object source = e.getSource();
		if((source == tField1) || (source == tField2) || (source ==button1)){
			text1.setText("");
			int queenNumber = new Integer(tField1.getText());
			int repeatTimes = new Integer(tField2.getText());
			
			int number = 0;			
			double d1 = 0.0;
			double dt = 0.0;			
			Queens myQueen = new Queens(queenNumber);
			for(int m = queenNumber; m >= 0; --m){
				number = 0;
				d1 = 0.0;
				dt = 0.0;
				for(int times = 0; times <=repeatTimes; ++times){
					number = myQueen.repeatQueensLvb(m);
					d1 = 1.0 / number;
					dt += d1;
				}
				dt = dt / repeatTimes;
				for(int i = 0; i < queenNumber; ++i){
					for(int j = 0; j < queenNumber; j++){
						if( myQueen.x[i] == j){
							text1.append("Q");
							text1.append("|");
							//System.out.print('Q');
							//System.out.print('|');
						}
						else{
							text1.append("A");
							text1.append("|");
							//System.out.print('A');
							//System.out.print('|');
						}
					}
					text1.append(newline);
					//System.out.println();			
				}
				
				Integer M = new Integer(m);				
				text1.append("---------------------------" + M.toString());
				text1.append(newline);
				//System.out.println(dt);
				//System.out.println("-------------------------------------	"  + m );
			}
			//text1.append(tField1.getText() + tField2.getText());
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		QueensDisplay qd = new QueensDisplay();
		qd.setTitle("8皇后问题");		
		qd.pack();
		qd.setVisible(true);

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -