queen.java

来自「一些Java的小的应用程序」· Java 代码 · 共 63 行

JAVA
63
字号

public class Queen { 
public static  char chessboard[][] =new char[8][8];
public static void main(String args[]){
int i=0;
int j=0;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
chessboard[i][j]='x';
nqueen(0,0,0);
System.out.println("The graph of 8 Queen on the chessboard: ");
System.out.println("0   1   2   3   4   5   6   7   8");
System.out.println("+---+---+---+---+---+---+---+---+");
for(i=0;i<8;i++){
//System.out.print("  "+i+" |");
for(j=0;j<8;j++)
System.out.print("|-"+chessboard[i][i]+"-");
System.out.println("|");
System.out.println("+---+---+---+---+---+---+---+---+");
}
}public static int nqueen(int Locx,int Locy,int queens){
int i,j;int n=0;
if(queens==8)return 1;
else if(Queenplace(Locx,Locy))
{chessboard[Locx][Locy]='Q';
for(i=0;i<8;i++)
for(j=0;j<8;j++){
n+=nqueen(i,j,queens+1);
if(n>0)break;
}
if(n>0)return 1;
else{
chessboard[Locx][Locy]='x';
 return 0; 
}
 }return 0;
}public static boolean Queenplace(int Locx,int Locy){
 int i,j;
 if(chessboard[Locx][Locy]!='x')return false;
 for(j=Locy-1;j>=0;j--)
  if(chessboard[Locx][j]!='x')return false;
 for(j=Locy+1;j<8;j++)
  if(chessboard[Locx][j]!='x')return false;
 for(i=Locx-1;i>=0;i--)
  if(chessboard[i][Locy]!='x')return false;
 for(i=Locx+1;i<8;i++)
  if(chessboard[i][Locy]!='x')return false;
 i=Locx-1;j=Locy-1;
 while(i>=0&j>=0)
  if(chessboard[i--][j--]!='x')return false;
 i=Locx+1;j=Locy-1;
 while(i<8&j>=0)
  if(chessboard[i++][j--]!='x')return false;
 i=Locx-1;j=Locy+1;
 while(i>=0&j<8)
  if(chessboard[i--][j++]!='x')return false;
 i=Locx+1;j=Locy+1;
 while(i<8&j<8)
  if(chessboard[i++][j++]!='x')return false;
 return true;
}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?