每日一道算法题,快乐每一天

it2023-07-30  65

经典8皇后问题

public class Queen { //数组位置代表行,数组值代表列 int[] cols; int ways; //摆法 public void setQueens(int n){ if(n<1) return; cols = new int[n]; place(0); System.out.println("一共有"+ways+"种方法"); } //从第row行开始 public void place(int row){ if(row == cols.length){ ways ++; show(); return; } for (int col=0;col<cols.length;col++){ if(judgeQueen(row,col)){ cols[row]=col; place(row+1); } } } public boolean judgeQueen(int row,int col){ for (int i=0;i<row;i++){ if (cols[i] ==col) return false; if(row -i == Math.abs(col-cols[i])) return false; } return true; } void show(){ for (int row=0;row<cols.length;row++){ for (int col=0;col<cols.length;col++){ if(cols[row]==col) { System.out.print("1 "); }else { System.out.print("0 "); } } System.out.println(); } System.out.println("------------------"); } public static void main(String[] args) { new Queen().setQueens(4); } }
最新回复(0)