import java.util.*; public class Main { static int[] b = new int[9]; //使用1-8, static int count = 0; public static int checkConflic(int x,int y){ boolean flag = true; for(int i=1;i<x;i++) if(b[i]==y) { flag=false; break; } if(flag==true) { for(int i=1;i<x;i++) if(x-i==y-b[i] || x-i+y-b[i]==0) { flag=false; break; } } if(flag==false) return 0; else return 1; } public static void printQueen() { for(int i=1;i<=8;i++) { int tmp = b[i]; for(int j=1;j<=8;j++) if(j!=tmp) System.out.print(" "); else System.out.print(tmp+" "); System.out.println(""); } } public static void queen(int x){ if(x>8) return; if(x==8) { for(int i=1;i<=8;i++) if(checkConflic(x,i)==1) { b[8]=i; count++; printQueen(); b[8]=0; System.out.println("------------------------------------"); } } else { for(int i=1;i<=8;i++) if(checkConflic(x,i)==1) { b[x]=i; queen(x+1); b[x]=0; } } } public static void main(String args[]) { Scanner cin = new Scanner(System.in); for(int i=0;i<=8;i++) b[i]=0; queen(1); } }
java实现8皇后问题

最新推荐文章于 2022-12-05 22:29:14 发布