leetcode hard模式专杀之51. N-Queens
2017-06-07 20:19
387 查看
继续leetcode hard模式, 八皇后问题的一般版,这种举一反三的题目值得好好琢磨,典型的回溯法,思路就不多说了,上代码,注意一一些边界条件的细节:
public class Solution { public List<String> transfer(int[] q){ List<String> result = new ArrayList<>(); for(int i = 0; i<q.length; i++){ StringBuilder sb = new StringBuilder(); for(int j=0; j<q.length; j++){ if(j==q[i]){ sb.append("Q"); }else{ sb.append("."); } } result.add(sb.toString()); } return result; } public List<List<String>> solveNQueens(int n) { List<List<String>> result = new ArrayList<>(); int[] q=new int ; for(int i = 0 ; i<n; i++){ enumerate(result, i, q, 0); } return result; } public boolean isConsistent(int[] q, int line, int index){ if(line==0){ return true; }else{ for(int i=0; i<line;i++){ //i行q[i]列 vs line行index列 if(q[i]==index){ //同列 return false; } if(index-q[i]==line-i){ return false; } if(index-q[i]==i-line){ return false; } } return true; } } public void enumerate(List<List<String>> result, int index, int[] q, int line){ if(line==q.length-1){ if(isConsistent(q, line, index)){ q[line] = index; result.add(transfer(q)); } }else if(line == 0){ q[line] = index; for(int j = 0; j<q.length; j++){ enumerate(result, j, q, line+1); } }else{ if(isConsistent(q, line, index)){ q[line] = index; for(int j = 0; j<q.length; j++){ enumerate(result, j, q, line+1); } } } } }
相关文章推荐
- Leetcode 51. N-Queens (Hard) (cpp)
- leetcode hard模式专杀之42. Trapping Rain Water
- leetcode hard模式专杀之233. Number of Digit One
- leetcode hard模式专杀之10Regular Expression Matching
- leetcode hard模式专杀之295. Find Median from Data Stream
- leetcodehard 模式专杀之85. Maximal Rectangle
- leetcode hard模式专杀之25 Reverse Nodes in k-Group
- leetcode hard模式专杀之68. Text Justification
- leetcode hard模式专杀之52 N-Queens II
- 51.leetcode N-Queens(hard)[递归回溯剪枝]
- leetcode hard模式专杀之76 Minimum Window Substring
- leetcode hard模式专杀之55. Jump Game
- leetcode hard模式专杀之99. Recover Binary Search Tree
- 【LeetCode】51.N-Queens(hard)解题报告
- leetcode解题笔记 51.N-Queens [Hard]
- leetcode hard模式专杀之57. Insert Interval
- leetcode hard模式专杀之41 First Missing Positive
- leetcode hard模式专杀之23 merge k sorted lists
- Leetcode 51. N-Queens && 52. N-Queens II(Hard)
- leetcode hard模式专杀之72. Edit Distance