import java.awt.*;
import javax.swing.*;
public class EightQueens extends JApplet{
public static final int SIZE=8;
private int[] queens=new int[SIZE];
public EightQueens()
{
search(0);
add(new ChessBoard(),BorderLayout.CENTER);
}
private boolean search(int row)
{
if(row==SIZE)
{
return true;
}
for(int column=0;column<SIZE;column++)
{
queens[row]=column;
if(isValid(row,column)&&search(row+1))
return true;
}
return false;
}
private boolean isValid(int row,int column)
{
for(int i=1;i<=row;i++)
{
if(queens[row-i]==column||queens[row-i]==column-i||queens[row-i]==column+i)
return false;
}
return true;
}
class ChessBoard extends JPanel
{
private Image queenImage=new ImageIcon("image/flag0.gif").getImage();
ChessBoard()
{
this.setBorder(BorderFactory.createLineBorder(Color.BLACK,2));
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
for(int i=0;i<SIZE;i++)
{
//System.out.println("1");
int j=queens[i];
g.drawImage(queenImage, j*getWidth()/SIZE,i*getHeight()/SIZE,getWidth()/SIZE,getHeight()/SIZE,this);
}
for(int i=1;i<SIZE;i++)
{
g.drawLine(0, i*getHeight()/SIZE, getWidth(), getHeight()*i/SIZE);
g.drawLine(i*getWidth()/SIZE, 0, i*getWidth()/SIZE, getHeight());
}
}
}
}
八皇后问题
最新推荐文章于 2023-07-07 14:04:01 发布