public class Main {
int queen[] = new int[8];
int count = 0;
public static void main(String[] args)
{
Main m = new Main();
m.eightQueen(0);
System.out.println(m.count);
}
/**
* 测试是否满足要求,利用遍历
* @param x
* @param y
* @return
*/
public boolean checkValid(int x, int y )
{
int temp_x;
int temp_y;
for(temp_x = 0; temp_x < x; temp_x++)
{
temp_y = queen[temp_x];
if(temp_y == y)
return false;
if(temp_y + temp_x == x + y)
return false;
if(temp_y - temp_x == y - x)
return false;
}
return true;
}
/**
* 回溯法求解,每次遍历,不行则向上回溯,另寻一条路
* @param x
*/
public void eightQueen(int x)
{
for(int y = 0; y< queen.length; y++)
{
if(checkValid(x, y))
{
if(x == 7)
{
count++;
return;
}
queen[x] = y;
eightQueen(x+1);
queen[x] = 0;
}
}
}
八皇后问题
最新推荐文章于 2021-03-18 12:54:15 发布