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

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

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 the number of distinct solutions to the n-queens puzzle.

Example:

Input: 4Output: 2Explanation: There are two distinct solutions to the 4-queens puzzle as shown below.[ [".Q..",  // Solution 1  "...Q",  "Q...",  "..Q."], ["..Q.",  // Solution 2  "Q...",  "...Q",  ".Q.."]]

 

AC code:

class Solution {public:    int totalNQueens(int n) {        int res = 0;        vector
> v; vector
nqueens(n, string(n, '.')); solve(v, nqueens, n, 0, res); return res; } void solve(vector
>& v, vector
& nqueens, int n, int row, int& res) { if (row == n) { res++; return; } for (int col = 0; col < n; ++col) { if (judge(nqueens, n, row, col)) { nqueens[row][col] = 'Q'; solve(v, nqueens, n, row+1, res); nqueens[row][col] = '.'; } } } bool judge(vector
nqueens, int n, int x, int y) { // up and down for (int i = 0; i < n && i != x; ++i) { if (nqueens[i][y] == 'Q') return false; } // right and left for (int i = 0; i < n && i != y; ++i) { if (nqueens[x][i] == 'Q') return false; } // left up for (int i = x-1, j = y-1; i >= 0 && j >= 0; --i, --j) { if (nqueens[i][j] == 'Q') return false; } // right up for (int i = x-1, j = y+1; i >= 0 && j < n; --i, ++j) { if (nqueens[i][j] == 'Q') return false; } return true; }};

Runtime: 16 ms, faster than 7.86% of C++ online submissions for N-Queens II.

 

转载于:https://www.cnblogs.com/ruruozhenhao/p/9813638.html

你可能感兴趣的文章
约瑟夫环问题
查看>>
c++ __int64
查看>>
IP封锁 (防火墙维护一张IP黑名单)
查看>>
【模板】trie树(字典树)
查看>>
JSON.stringify 语法实例讲解
查看>>
Python6 模块
查看>>
P3377 【模板】左偏树(可并堆)
查看>>
Djang 用户登录
查看>>
Java同步锁——lock与synchronized 的区别【转】
查看>>
洛谷-校门外的树-数组
查看>>
Python--网络编程-----文件传输简单版本
查看>>
CF 208E. Blood Cousins [dsu on tree 倍增]
查看>>
趣谈面试(一)
查看>>
Quart2D setNeedsDisplay
查看>>
设计模式之策略设计模式
查看>>
Sql server 从一个表中获取数据更新到另一个表中
查看>>
JS继承的实现方式 原型 原型链 prototype和_proto_的区别
查看>>
[bzoj3622] 已经没有什么好害怕的了
查看>>
Objective-c 中 nil, Nil, NULL和NSNull的区别
查看>>
解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot
查看>>