博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 51 N-Queens & 52 N-Queens II ----- java
阅读量:5275 次
发布时间:2019-06-14

本文共 1909 字,大约阅读时间需要 6 分钟。

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皇后问题。皇后不能出在同一条直线、竖线以及斜线上。

想法就是  1、建立一个n的数组pos[n],表示第i行的皇后放在第pos[i]处。

      2、然后需要在第num个放皇后的时候,需要依次判断前num个数字(i :  0 --> num-1),这个位置的数字不能与pos[i],pos[i]-(num-i),pos[i]+(num-i)这三个数字相同,判断完之前的所有数字之后,就可以放入该数字了。

结果是3ms。算是还可以的成绩。

public class Solution {    public List
> solveNQueens(int n) { List
> result = new ArrayList
>(); int[] pos = new int[n]; putQueen(pos,0,result); return result; } public void putQueen(int[] pos,int num,List
> result){ if( num == pos.length ){ List
res = new ArrayList
(); char[] ans = new char[pos.length]; for( int j =0;j
= 0) exi[pos[i]-(num-i)] = 1; if( pos[i]+num-i < pos.length) exi[pos[i]+num-i] = 1; } for( int i = 0; i

52题

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

这题和上面的一样,就是求出解的个数。

代码就是简单修改一下即可。

public class Solution {    public int totalNQueens(int n) {        int[] pos = new int[n];        return putQueen(pos,0,0);    }	public int putQueen(int[] pos,int num,int total){		if( num == pos.length ){			return total+1;		}		int[] exi = new int[pos.length];		for( int i = 0;i
= 0) exi[pos[i]-(num-i)] = 1; if( pos[i]+num-i < pos.length) exi[pos[i]+num-i] = 1; } for( int i = 0; i

 

转载于:https://www.cnblogs.com/xiaoba1203/p/5715975.html

你可能感兴趣的文章
weevely-------linux中的菜刀(转载)
查看>>
Coprime Conundrum 容斥原理
查看>>
对REST的理解
查看>>
Linux批量重命名文件
查看>>
Optimize Slow VBA Code
查看>>
一个简单的epoll测试例子
查看>>
牛客网Java刷题知识点之字节缓冲区练习之从A处复制文本文件到B处(BufferedReader、BufferedWriter)、复制文本文件的原理图解...
查看>>
修改数据表——添加约束(二十二)
查看>>
标准配置的UBUNTU 11.10 RUBY VMWARE 镜像,手工MOD(ZSH_RVM_RAILS_VIM)
查看>>
SQL高效率语句(一)
查看>>
【大数据技术】操作系统和Hadoop版本选择
查看>>
生成树计数
查看>>
Elasticsearch入门之从零开始安装ik分词器
查看>>
去除表单元素的默认样式
查看>>
jmeter测试元件--控制器
查看>>
TextBox中的KeyDown 时间不能响应的问题!
查看>>
Generate Parentheses
查看>>
zookeeper 安装
查看>>
Mashmokh and Tokens
查看>>
myeclipse中配置spring xml自己主动提示
查看>>