Leetcode 51. N-Queens
来源:互联网 发布:手机计步器软件排行 编辑:程序博客网 时间:2024/04/30 20:38
Leetcode
51. N-Queens
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..”]
]
原题可以查看
https://leetcode.com/problems/n-queens/?tab=Description
解题思路:
深度优先搜索,进行遍历,若当前位置可以放“皇后”,则对下一行的位置进行遍历。下面给出代码:
public class Solution { public List<List<String>> solveNQueens(int n) { List<List<String>> result = new ArrayList<>(); int[] recorder = new int[n+1]; dfs(1,n,recorder,result); return result; }//通过recorder 的记录给出其中一个可能的棋盘摆放结果 private List<String> generateBlock(int []recorder,int n){ List<String> block = new ArrayList<String>(); for(int i=1;i<=n;i++){ StringBuilder strBuilder = new StringBuilder(); for(int j=1;j<=n;j++){ if(recorder[i]==j){ strBuilder.append("Q"); }else{ strBuilder.append("."); } } block.add(strBuilder.toString()); } return block; }//检查第x行,第y列能否放“皇后” private boolean put(int x,int y,int[]recorder){ for(int i=1;i<x;i++){ int dx = Math.abs(x-i); int dy = Math.abs(y-recorder[i]); if(dx==dy||dy==0) return false; } return true; }//深度搜索 private void dfs(int row,int n,int[]recorder,List<List<String>> result){ if(row>n){ result.add(generateBlock(recorder,n)); return; } for(int i=1;i<=n;i++){ if(put(row,i,recorder)){ recorder[row]=i; dfs(row+1,n,recorder,result); } } }}
欢迎大家提出宝贵意见。
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
- C++ 长整型数据的输出
- 网页安全测试
- AXI4、AXI4-Lite、AXI-Stream总线协议的简单认识
- 如何提取iOS App素材
- Codeforces Gym 100962 H. Hans Zimmer
- Leetcode 51. N-Queens
- [USACO1.3]混合牛奶 Mixing Milk
- C Primer Plus 知识点整理(一)
- Codeforces Round #397 E. Tree Fold(bfs,想法题,好题)
- 排队接水
- 六角填数(DFS)
- Easy单例模式
- 欢迎使用CSDN-markdown编辑器
- Codeforces Gym 100962 J. Jimi Hendrix