中午没怎么睡好......床头的室友,闲着没事,中午都在睡觉他敲起了代码。唉,都不知道该怎么说了。主要是敲个代码和弹钢琴一样,...恨不得敲坏键盘,真是没这个必要吧...难搞!
这道题只是返回解法的数量,把昨天的代码稍微改一下就行,也不是很难。
个人微改:
import java.util.Arrays;
class queen{
int m = 0;
public int solveNQueens(int n){
char [][] chessboard = new char[n][n];
for(char c[] : chessboard) {
Arrays.fill(c,'.');
}
backTrack(n,0,chessboard);
return m;
}
public void backTrack(int n,int row,char[][] chessboard) {
if(row == n) {
m++;
return;
}
for(int col=0;col<n;col++) {
if(isValid(row,col,n,chessboard)) {
chessboard[row][col]='Q';
backTrack(n,row+1,chessboard);
chessboard[row][col]='.';
}
}
}
public boolean isValid(int row,int col,int n,char[][] chessboard) {
//列:
for(int i=0;i<n;i++) {
if(chessboard[i][col]=='Q') {
return false;
}
}
for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--) {
if(chessboard[i][j]=='Q') {
return false;
}
}
for(int i=row-1,j=col+1;i>=0&&j<=n-1;i--,j++) {
if(chessboard[i][j]=='Q') {
return false;
}
}
return true;
}
}
public class N_Queens_2 {
public static void main(String args[]) {
queen hei = new queen();
System.out.println(hei.solveNQueens(1));
}
}