问题描述:对于一个8*8的棋盘需要放置8个皇后,使得该位置处的皇后在改行和该列不存在其他皇后,求所有满足条件的的方案数目;递归求解,可以用一个index表征当前到达哪一层,如果大于最大层数,则返回一个可行的方案数。如果当前位置可以放皇后,则放置进去并更新board棋盘,则进入下一个dfs循环中,等待该dfs退出来后,恢复棋盘board进行下一次循环。
public Boolean isValid(int board[][],int row,int column)
{
if(int i=0;i<board.length;i++)
{
if(board[i][column]=='Q'){return false;}
}
for(int i=0;i<board[0].length;i++)
{
if(board[row][i]=='Q'){return false;}
}
return true;
}
public void eightQueue(int[][]board,int layer,Integer number)
{
if(layer==board.length){nums+=1;}
for(int i=0;i<borad[layer].length;i++)
{
if(isValid(borad,layer,i))
{
board[layer][i]='Q';
eightQueue(board,layer+1,number);
board[layer[i]]='.';
}else
{
continue;
}
}
}
public int EightQueue()
{
char [][]board=new char[8][8];
for(int i=0;i<8;i++)
{
Arrays.fill(board[i],'.');
}
Integer number=0;
eightQueue(board,0,number);
???????return number.valueOf();
}
?