保捱科技网
您的当前位置:首页八皇后问题 java语言

八皇后问题 java语言

来源:保捱科技网
package day04;

public class QueenQuestion {

private static final int LEN = 8;

private int count =0; //已经放皇后数量 private int sum =0; // 总共方法的数量 private int[][] ary = new int[LEN][LEN];

public boolean islineSame(int j){ // 判断同一列是否有皇后 for(int i=0;ireturn true; }

public boolean isdiagonal(int m,int n){ int i; int j;

for(i=m,j=n;iif(ary[i][j]==1) return false; }

for( i=m,j=n;i>=0&&j>=0;i--,j--){//判断右斜线上是否有皇后 if(ary[i][j]==1) return false; }

for( i=m,j=n;i>=0&&jfor( i=m,j=n;i=0;i++,j--){//判断左斜线上是否有皇后 if(ary[i][j]==1) return false; }

return true; }

public void printAry(){// 显示八皇后的放法

System.out.println(\"-----第\"+sum+\"种放法------\"); for(int i=0;i }

for(int j=0;jSystem.out.print(ary[i][j]+\" \"); }

System.out.println(); } }

public void doCount(int i){ while(ifor(int j=0;jif(islineSame(j)&&isdiagonal(i,j)){ ary[i][j]=1; count++;

if(count==LEN){//退回一步再找其他放法 sum++;

printAry(); ary[i][j]=0; count--; continue; }

doCount(i+1); ary[i][j]=0; count--; } }

return; } }

public static void main(String[] args){ QueenQuestion q = new QueenQuestion(); q.doCount(0); }

因篇幅问题不能全部显示,请点此查看更多更全内容