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

📄 nqueens.java

📁 This progamram desrible how put N queens on the board have size N*N Using algorithm back tracking
💻 JAVA
字号:
import  javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.net.*;
//import java.awt.Frame;

public class doanver2 extends JFrame implements ActionListener {
  	private  Image img=null ;
    
  	public doanver2()
  	{
  	  	
  	super("DO AN CAU TRUC DU LIEU");
	JButton  button1;
      button1=new JButton("CLICK DAY DE BAT DAU CHUONG TRINH");
  	
    button1.setBounds(0,580,650,40);
    button1.addActionListener(this); 
	 add(button1);

	URL url = getClass().getResource("picture/gioithieu.jpg");
    img = Toolkit.getDefaultToolkit().getImage(url);
  	

  	}
			
	 public void paint(Graphics g)
   {
   	g.drawImage(img,0,10,this);
   }
    
    public static void main (String args[]) {
 
  
    doanver2 mywindow=new doanver2();
    //mywindow.getContentPane();
    

    mywindow.setLayout(null );	
    mywindow.setBounds(100,50,650,650);
    
      

    mywindow.addWindowListener(new WindowAdapter(){
    	public void windowClosing(WindowEvent event){
    		System.exit(0);
    	}
    }
    )	;
    	
    
    	
    	//mywindow.setSize(new Dimension(650,650));
    	//mywindow.setVisible(true);
    	mywindow.show();
          }

public void actionPerformed(ActionEvent event)
     {  
   
     }
}
   
  /* class NQUEEN2 extends JApplet implements ActionListener{
    
/*****************************
* SU DUNG GIAI THUAT QUAY LUI
* 
******************************
JTextField Text1;
JTextField Text2=new JTextField(5);
int count=0; //So giai phap
int value;;//lay gia tri tu TextField

int N=50;
//Mang chua vi tri thoa man cua cac con hau
int m[][]=new int[8000*N][50];
int R[]=new int[N];
//Cot va 2 duong cheo, =1 nghia la khong co hau nao
boolean C[]=new boolean[N], T1[]=new boolean[2*N], T2[]=new boolean[2*N];
Container RequiredChessBoards; //Man hinh chua ket qua
JLabel nhan2;

ChessBoard Banco=new ChessBoard(m,1,8);
public void init()
{
for (int i=0; i<N; i++)
{
C[i] = true;
R[i] = -1;
}
for (int i=0; i<2*N-1; i++)
{
T1[i] = true;
T2[i] = true;
}


RequiredChessBoards = new JPanel();
add(RequiredChessBoards);
RequiredChessBoards.setLayout(null );
RequiredChessBoards.setSize(new Dimension(600,600));
Color xanh2=new Color(5,102,170) ;
RequiredChessBoards.setBackground(xanh2);



JLabel de1=new JLabel("SINH VIEN THUC HIEN:LE QUOC DUNG & LUU HOANG LONG");
de1.setFont(new java.awt.Font("Arial",1,16));
de1.setBounds(30,10,500,20);
RequiredChessBoards.add(de1);
JLabel de2=new JLabel("DE TAI:BAI TOAN DAT N QUAN HAU TREN BAN CO KICH THUOC N");
de2.setFont(new java.awt.Font("Arial",3,16));
de2.setBounds(30,30,550,40);
RequiredChessBoards.add(de2);
setFont(new java.awt.Font("Arial", 0, 16));
JLabel nhan=new JLabel("Nhap vao kich thuoc N cua ban co:");
nhan.setBounds(50,80,240,25);
RequiredChessBoards.add(nhan);
Text1=new JTextField(5);
Text1.setBounds(300,80,60,20);
RequiredChessBoards.add(Text1);
Text1.setText("8");
Text1.addActionListener(this);

nhan2=new JLabel(" ");
nhan2.setBounds(50,120,200,25);
RequiredChessBoards.add(nhan2);
RequiredChessBoards.add(Banco);
}

public void start()
{
//bien dem count=0 de bat dau dem
count=0;


String s=Text1.getText();
value=Integer.parseInt(s);

TryNextQueen(value,0);
RequiredChessBoards.remove(nhan2);
nhan2=new JLabel("Co  "+count+" giai phap");
nhan2.setBounds(50,120,200,20);
RequiredChessBoards.add(nhan2);

    if(count>=1)
    {
	JLabel nhan3=new JLabel("Chon giai phap muon hien thi");
	nhan3.setBounds(50,150,220,25);
	RequiredChessBoards.add(nhan3);
	//Text2=new TextField(5);
	Text2.setText("1");
	Text2.addActionListener(this);
	Text2.setBounds(300,150,60,20);
	RequiredChessBoards.add(Text2);
    DrawBoard();
    }   

    if(count==0) 
    {
	RequiredChessBoards.remove(Banco);
//    RequiredChessBoards.remove(nhan3);
    RequiredChessBoards.remove(Text2);
    }    
}   
    public void DrawBoard()
    {
    int value2;
    String s2=Text2.getText();
    value2=Integer.parseInt(s2);
    
    RequiredChessBoards.remove(Banco);
    Banco=new ChessBoard(m,value2,value);
    Banco.setBounds(50,200,value*30+2,value*30+2);
    RequiredChessBoards.add(Banco);
	}


//GIAI THUAT QUAY LUI
public void TryNextQueen(int a,int NumRequiredQueen)
{
for (int col=0; col<a; col++) //Voi 1 dong i cho truoc ta cho cac cot chay
{
if (C[col]==true && T1[NumRequiredQueen+col]==true && T2[NumRequiredQueen-col+a]==true)
{
//Thu dat vi tri con hau o day
R[NumRequiredQueen] = col;
C[col] = false;
T1[NumRequiredQueen+col] = false;
T2[NumRequiredQueen-col+a] = false;

//Neu da tim du thi sang hang moi, neu khong tim tiep
if (NumRequiredQueen<a-1)
TryNextQueen(a,NumRequiredQueen + 1);
else
{
count++;
for(int i=0;i<a;i++)
m[count][i]=R[i];
}

//Cat bot hau
C[col] = true;
T1[NumRequiredQueen+col] = true;
T2[NumRequiredQueen-col+a] = true;
}
}


}
public void actionPerformed(ActionEvent event)
{ Object source=event.getSource();
  if(source==Text1) start();
  if(source==Text2) DrawBoard();
}

}

//LOP DUNG DE VE BAN CO
class ChessBoard extends Canvas
{
    int giatri;
    public ChessBoard(int poQueens[][],int b,int a)
    {   giatri=a; 
    
     Queens = new int[a];
        for(int i = 0; i < a; i++)
            Queens[i] = poQueens[b][i];

    }

    public void paint(Graphics g)
    {
       
		Color xanh=new Color(0,0,100);
		Color trang=new Color(255,255,200);
		Color red1=new Color(255,30,30);
	
		for(int i=0;i<giatri;i++)
			for(int j=0;j<giatri;j++)
			{ if(i%2==0)
			    {if(j%2==0) g.setColor(xanh);
				  else g.setColor(trang);
				  g.fillRect(j*30,i*30,30,30);				    
			    }				    	
			  else {
			  	   if(j%2==0) g.setColor(trang);
			  	   else g.setColor(xanh);
			  	   g.fillRect(j*30,i*30,30,30);
			       }
			}
		g.setColor(red1);
		for(int i=0;i<giatri;i++)
			g.fillOval(i*30+4,Queens[i]*30+4,23,23);
		
		}

   int Queens[];  
} 


*/

⌨️ 快捷键说明

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