LeetCode--N-Queens
来源:互联网 发布:优盘数据恢复实例 编辑:程序博客网 时间:2024/06/05 07:05
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://oj.leetcode.com/problems/n-queens/
题目:n*n的棋盘上放n个皇后,使得任何两个皇后不互相攻击。
思路:递归+回溯。
import java.util.ArrayList;import java.util.List;public class NQueens {public static void main(String[] args) {List<String[]> result = new NQueens().solveNQueens(5);for(String[] li:result){for(String str : li){System.out.println(str);}System.out.println("----------------");}}public List<String[]> solveNQueens(int n) {List<String[]> result = new ArrayList<String[]>();List<Integer> cols = new ArrayList<Integer>();if(n <= 0)return result;search(result,cols,n);return result;}public void search(List<String[]> result,List<Integer> cols,int n){if(cols.size() == n){result.add(draw(cols));return;}for(int col=0;col<n;col++){if(!isValid(cols,col))continue;cols.add(col);search(result,cols,n);cols.remove(cols.size()-1);}}public String[] draw(List<Integer> cols){String[] chess = new String[cols.size()];for(int i=0;i<chess.length;i++){chess[i] = "";for(int j=0;j<cols.size();j++){if(j==cols.get(i))chess[i] += "Q";elsechess[i] += ".";}}return chess;}public boolean isValid(List<Integer> cols,int col){int row = cols.size();for(int i=0;i<row;i++){if(cols.get(i) == col)return false;if(i - cols.get(i) == row - col)return false;if(i+cols.get(i) == row+col)return false;}return true;}}
reference:http://www.snip2code.com/Snippet/45053/N-Queens--LeetCode
http://huntfor.iteye.com/blog/2039013
0 0
- 【LeetCode】N-Queens && N-Queens II
- leetcode N-Queens & N-Queens II
- Leetcode: N-Queens && N-Queens II
- 【Leetcode】【python】N-Queens/N-Queens II
- LeetCode: N-Queens II
- LeetCode: N-Queens
- LeetCode : N-Queens
- LeetCode : N-Queens II
- [Leetcode] N-Queens II
- leetcode 72: N-Queens
- LeetCode 38: N-Queens
- 【leetcode】N-Queens II
- 【leetcode】N-Queens
- LeetCode: N Queens II
- [LeetCode]N-Queens
- [LeetCode]N-Queens II
- [leetcode]N-Queens
- [LeetCode] Anagrams、N-Queens
- 【第2章 习题6】
- 使用嵌套select子式 解决mysql不能叠加使用如max(sum())的问题
- 10.28软件设计大赛一下代码
- Python正则表达式指南
- java集合类
- LeetCode--N-Queens
- 链表和数组的优缺点
- python字符串操作
- [leetcode]Add Binary
- WEB程序设计之HTML(二)
- USB架构概述之九USB主机:硬件和软件
- Android学习日记(2)
- Erlang杂记
- 第九周 单步调试