八皇后问题

来源:互联网 发布:淘宝bug 编辑:程序博客网 时间:2024/05/16 10:18
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());}}}}

0 0