首页 > 编程语言 > 详细

LeetCode--052--N皇后II(java)

时间:2019-05-10 16:33:48      阅读:131      评论:0      收藏:0      [点我收藏+]

皇后问题研究的是如何将 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

LeetCode--052--N皇后II(java)

原文:https://www.cnblogs.com/NPC-assange/p/10845120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!