private static int number = 1;
public static void main(String args[])
{
int net[][], n;
Scanner scan = new Scanner(System.in);
System.out.println("请输入N");
n = scan.nextInt();
net = new int[n][n];
queen(0, net);
}
public static void queen(int row, int[][] net)
{
if (row == net.length)
{
if (getQueenNumber(net) == net.length)
{
printQueen(net);
}
return;
}
for (int i = 0; i < net.length; i++)
{
if (isOK(net, row, i))
{
net[row][i] = 1;
queen(row + 1, net);
net[row][i] = 0;
}
if (i + 1 == net.length)
return;
}
}
public static boolean isOK(int[][] net, int row, int col)
{
int x, y;
for (int i = 0; i < net.length; i++)
{
if (net[i][col] == 1)
{
return false;
}
x = row - i;
y = col - i;
if (!(x < 0 || y < 0||x>net.length-1||y>net.length-1))
{
if (net[x][y] == 1)
return false;
}
//��һ��
x = row - i;
y = col + i;
if (!(x < 0 || y < 0||x>net.length-1||y>net.length-1))
{
if (net[x][y] == 1)
return false;
}
}
return true;
}
public static int getQueenNumber(int[][] net)
{
int n = 0;
for (int i = 0; i < net.length; i++)
{
for (int j = 0; j < net.length; j++)
{
if (net[i][j] == 1)
n++;
}
}
return n;
}
public static void printQueen(int net[][])
{
for (int i = 0; i < net.length; i++)
{
for (int j = 0; j < net.length; j++)
{
System.out.print(net[i][j] + " ");
}
System.out.println();
}
System.out.println("----------- "+number);
number++;
}