52. N-Queens II

摘要:
解决方案(C++):public:inttotalNQueens(intn){intcount=0;vector<string>ans(n,string(n,‘.'));solveNQuens(ans,0,n,count);returncount;}private:voidsolveNQqueens(vector<string˃&ans,intro,intn,int&count){if(

Solution (C++):

public:
    int totalNQueens(int n) {
        int count = 0;
        vector<string> ans(n, string(n, '.'));
        solveNQueens(ans, 0, n, count);
        
        return count;
    }
private:
    void solveNQueens(vector<string> &ans, int row, int n, int &count) {
        if (row == n)  {
            count++;
            return;
        }
        
        for (int col = 0; col < n; ++col) {
            if (isValid(ans, row, col, n)) {
                ans[row][col] = 'Q';
                solveNQueens(ans, row+1, n, count);
                ans[row][col] = '.';
            }
        }
    }
    bool isValid(vector<string> ans, int row, int col, int n) {
        for (int i = 0; i < row; ++i) {             //判断列是否有'Q'
            if (ans[i][col] == 'Q')  return false;
        }
        for (int i = row-1, j = col-1; i >= 0 && j >= 0; --i, --j) {             //判断45°方向是否有'Q'
            if (ans[i][j] == 'Q')  return false;
        }
        for (int i = row-1, j = col+1; i >= 0 && j <= n-1; --i, ++j) {           //判断135°方向是否有'Q'
            if (ans[i][j] == 'Q')  return false;
        }
        return true;
    }

免责声明:文章转载自《52. N-Queens II》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CF1439D INOI Final Contests51. N-Queens下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

官方文档:Android应用程序运行的性能设计 狼人:

Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航。由此,它必须是高效的。电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了。由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序。 虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键。选择合适的算法和数据结构永远是你最先应该考...

对类前置声明和包含头文件的一点理解

作者:朱金灿 http://blog.csdn.net/clever101 类的前置声明(forward declaration)和包含头文件(#include)的区别常常会迷惑我们,特别是涉及两个类相互包含的时候。因此我们有必要搞清楚二者的区别以及二者的适用场合。 首先我们需要问一个问题是:为什么两个类不能互相包含头文件?所谓互相包含头文件,我举一个例...

Laravel 出现 No application encryption key has been specified.

https://blog.csdn.net/hseven779/article/details/78743713 若文件根目录下没有 .env 1、.env.example 改名使用命令 copy 修改为 .env 2、使用命令 php artisan key:generate 获取密码,自动保存到 .env3、将密...

basic coder » 写C程序时犯的超低级致命错误

basic coder » 写C程序时犯的超低级致命错误 写C程序时犯的超低级致命错误 2010年3月7日levin 发表评论阅读评论4,541 人阅读过 这几天一直在用C写程序,对于C/C++的内存管理方面的机制总是很小心,每次malloc之后都记得一定要free,可却犯了一个最初始的低级错误。 写了一个这样的函数: 1 2 3 4 5 6 7...

How to Install IIS on Windows 7 or Vista HowTo Geek

How to Install IIS on Windows 7 or Vista - How-To Geek ow to Install IIS on Windows 7 or Vista If you are a developer using ASP.NET, one of the first things you’ll want to instal...

一键解决Ubuntu下安装Eclipse Android/C/C++ 开发环境

一键解决Ubuntu下安装Eclipse Android/C/C++ 开发环境 - cheungmine的专栏 - 博客频道 - CSDN.NET 一键解决Ubuntu下安装Eclipse Android/C/C++ 开发环境 2011-11-20 21:061358人阅读评论(0)收藏举报 一键解决Ubuntu下安装Eclipse Android/...