博客
关于我
leetcode做题记录0052
阅读量:343 次
发布时间:2019-03-04

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

leetcode 0051

说明

只是为了记录一下,不求多快,也不深究。

会简要描述思路,代码中不写注释。

如碰到不会做的用了别人代码会在博客中标出。

题目描述

在这里插入图片描述

思路

就跟上一题一样啊,上一题是把所有解都找出来,这题是求出解的个数,比上一题还简单一点。

class Solution {       private int count;	private int[] cols;	private int[] mains;	private int[] secondary;	private int[] queens;	private int n;	public int totalNQueens(int n) {   		cols = new int[n];		mains = new int[2 * n - 1];		secondary = new int[2 * n - 1];		queens = new int[n];		this.n = n;		this.count = 0;		backTrack(0);		return count;	}	private void backTrack(int row) {   		if (row == n) {   			count++;			return;		}		for (int col = 0; col < n; col++) {   			if (isOkToPut(row, col)) {   				putQueen(row, col);			} else {   				continue;			}			backTrack(row + 1);			removeQueen(row, col);		}	}	private boolean isOkToPut(int row, int col) {   		if (cols[col] == 0 && mains[row - col + n - 1] == 0 && secondary[row + col] == 0) {   			return true;		} else {   			return false;		}	}	private void putQueen(int row, int col) {   		queens[row] = col;		cols[col] = 1;		mains[row - col + n - 1] = 1;		secondary[row + col] = 1;	}	private void removeQueen(int row, int col) {   		queens[row] = 0;		cols[col] = 0;		mains[row - col + n - 1] = 0;		secondary[row + col] = 0;	}}

转载地址:http://cwee.baihongyu.com/

你可能感兴趣的文章
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
查看>>
SLAM学习笔记-求解视觉SLAM问题
查看>>
还在一个一个手动安装虚拟机吗?Cobbler自动部署装机一键最小化安装打把游戏就好了
查看>>
程序员应该知道的97件事
查看>>
create-react-app路由的实现原理
查看>>
Linux环境变量配置错误导致命令不能使用(杂谈)
查看>>
openstack安装(九)网络服务的安装--控制节点
查看>>
shell编程(六)语言编码规范之(变量)
查看>>
vimscript学习笔记(二)预备知识
查看>>
SSM项目中遇到Could not autowire. No beans of ‘XXX‘ type found.错误
查看>>
Android数据库
查看>>
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
查看>>
STM8 GPIO模式
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>
C语言实现dijkstra(adjacence matrix)
查看>>
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
查看>>
【单片机开发】智能小车工程(经验总结)
查看>>
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
查看>>
C++&&STL
查看>>