Leetcode 51. N-Queens
来源:互联网 发布:win 10 网络初始化失败 编辑:程序博客网 时间:2024/05/17 09:32
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q'
and '.'
both indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."]]
这是经典N皇后,回溯遍历。N皇后问题比较复杂的部分就是判断部分,开始忘了斜线上不能重合的情况,后来加上了就对了。
public class Solution { private boolean isRight(int[][] grid, int s, int t, int n){ for(int i=0; i< s; i++ ){ if(grid[i][t]==1){ return false; } } for(int i=0; i< t; i++){ if(grid[s][i] ==1){ return false; } } int i = s-1; int j =t -1; while(i>=0 && j>=0){ if(grid[i][j]==1){ return false; } i--; j--; } i=s-1; j=t+1; while(i>=0 && j <n){ if(grid[i][j]==1){ return false; } i--; j++; } return true; } private List<String> generateList(int[][] grid){ List<String> line = new ArrayList<String>(); for(int[] col : grid){ StringBuilder strBuilder = new StringBuilder(); for(int ele : col){ if(ele==1){ strBuilder.append("Q"); }else{ strBuilder.append("."); } } line.add(strBuilder.toString()); } return line; } private void itera(int k,int n, int[][] grid, List<List<String>> list){ if(k == n){ list.add(generateList(grid)); return ; } for(int i=0; i<n; i++){ if(isRight(grid, k, i, n)){ grid[k][i] =1; itera(k+1, n, grid, list); grid[k][i]=0; } } } public List<List<String>> solveNQueens(int n) { int[][] grid =new int[n][n]; List<List<String>> list = new LinkedList<>(); if(n !=0){ itera(0, n, grid, list); } return list; }}
时间复杂度O(N^2), 空间复杂度为O(N^2)。
0 0
- LeetCode 51. N-Queens
- LeetCode --- 51. N-Queens
- LeetCode 51.N-Queens
- [Leetcode] 51. N-Queens
- [leetcode] 51.N-Queens
- [leetcode] 51. N-Queens
- LeetCode 51. N-Queens
- leetcode 51. N-Queens
- 【LeetCode】51. N-Queens
- leetcode 51. N-Queens
- LeetCode 51. N-Queens
- LeetCode 51. N-Queens
- leetcode.51. N-Queens
- Leetcode 51. N-Queens
- LeetCode 51. N-Queens
- [LeetCode] 51. N-Queens
- leetcode 51. N-Queens
- leetcode-51. N-Queens
- 文章标题
- 一些jar的作用
- 第六章 Lighting Models
- A strange lift (HDU1548)
- Tensorflow: recurrent neural network (mnist basic)
- Leetcode 51. N-Queens
- c++ 字符串剪切
- Spring AOP 原理分析 part1
- VR时代的思考
- 异常:android.database.StaleDataException: Attempted to access a cursor after it has been closed
- 使用wireshark抓取bilibili直播的真实地址
- C++ hook
- WebRTC原生音频采集
- linux信号机制基础