n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
上图为 8 皇后问题的一种解法。
给定一个整数 n,返回 n 皇后不同的解决方案的数量。
示例:
输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q.."]] 只需要把51题的return条件换掉就行,注意用static时,服务器进行测试1的时候很容易出错。故变为数组进行存储结果。。。不求上进
1 class Solution { 2 public static int totalNQueens(int n) { 3 if(n <=0)return 0; 4 int[] res={0}; 5 helper(new int[n],0,res); 6 return res[0]; 7 } 8 public static void helper(int[] queens,int pos,int[] res){ 9 if(pos == queens.length){10 res[0] += 1;11 return;12 }13 for(int i = 0 ;i < queens.length;i++){14 queens[pos] = i;15 if(isValid(queens,pos)){16 helper(queens,pos+1,res);17 }18 }19 }20 public static boolean isValid(int[] queens,int pos){21 for(int i = 0;i < pos;i++){22 if(queens[i] == queens[pos])return false;23 else if(Math.abs(queens[i] - queens[pos]) == Math.abs(i - pos)){24 return false;25 }26 }27 return true;28 }29 30 }
2019-05-10 16:19:39