queen.java

来自「n皇后问题」· Java 代码 · 共 66 行

JAVA
66
字号
public class Queen {
int size;
int resultCount;
public void compute ( int size ) {
this.size = size;
resultCount = 0;
int data[] = new int[size];
int count; // пܵ
int i,j;
// пܵĸ
count = 1;
for ( i=0 ; i<size ; i++ ) {
count = count * size;
}
// ÿһܵ
for ( i=0 ; i<count ; i++ ) {
// µϻʺİڷλã 8 ʾ
// ˴Ż
int temp = i;
for ( j=0 ; j<size ; j++ ) {
data [j] = temp % size;
temp = temp / size;
}
// ǷУԣ
if ( test(data) )
output( data );
}
}
/*
* ʺǷ
* 
*/
public boolean test( int[] data ) {
int i,j;
for ( i=0 ; i<size ; i++ ) {
for ( j=i+1 ; j<size ; j++ ) {
// Ƿͬһ
if ( data == data[j] )
return false;
// Ƿһб
if ( (data+i) == (data[j]+j) )
return false;
// Ƿһб
if ( (data-i) == (data[j]-j) )
return false;
}
}
return true;
}
/*
* ij»ʺ
*
*/
public void output ( int[] data ) {
int i;
System.out.print ( ++resultCount + ": " );
for ( i=0 ; i<size ; i++ ) {
System.out.print ( "(" + i + "," + data + ") " );
}
System.out.println ();
}
public static void main(String args[]) {
(new Queen()).compute( 8 );
}
}

⌨️ 快捷键说明

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