力扣刷题记录(10)LeetCode:51、37

51. N 皇后

应为各个皇后之间不能同行,所以一行只能有一个皇后。我们可以遍历每一行的各个位置,判断该位置是否可以放置皇后,一行放置一个。当一个皇后的位置已经在这一行确定了,我们就可以遍历下一行来确定下一个皇后在下一行的位置,是不是像是在不同集合里各取一个数。和17.电话号码的字母组合 类似,只不过这题在取值的时候是有条件的。在不同集合间取值是不需要startIndex(开始位置)的。

class Solution {
public:vector<string> path;vector<vector<string>> ans;bool isEffective(vector<string> path, int depth,int index){if(depth==0)    return true;//检查同一列是否有皇后for(int i=0;i<path.size();i++){if(path[i][index]=='Q') return false;}//检查左上方是否有皇后int d=depth-1,j=index-1;while(d>=0 && j>=0 && j<path[0].size()){if(path[d][j]=='Q') return false;d--;j--;}//检查右上方是否有皇后d=depth-1;j=index+1;while(d>=0 && j>=0 && j<path[0].size()){if(path[d][j]=='Q') return false;d--;j++;}return true;}void backtracking(int n,int depth){//当确立了n个皇后,收集结果if(path.size()==n){ans.push_back(path);return;}for(int i=0;i<n;i++){//检查当前索引是否可行if(!isEffective(path,depth,i))  continue;//回溯string temp(n,'.');temp[i]='Q';path.push_back(temp);backtracking(n,depth+1);path.pop_back();}}vector<vector<string>> solveNQueens(int n) {backtracking(n,0);return ans;}
};

37. 解数独

还是需要用回溯,用两层for循环来确定位置。然后在该位置处遍历1-9,判断合适的数字。遇到合适的数字后就将其写入board中,然后利用递归再对下一个空白处进行值的确定。

class Solution {
public://判断值是否合适bool isOK(vector<vector<char>>& board,char c,int row,int list){for(int i=0;i<board.size();i++){//检查行if(board[row][i]==c) return false;//检查列if(board[i][list]==c)   return false;}//检查九宫格for(int i=(row/3)*3;i<(row/3)*3+3;i++){for(int j=(list/3)*3;j<(list/3)*3+3;j++){if(board[i][j]==c)  return false;}}return true;}bool backtracking(vector<vector<char>>& board){for(int i=0;i<board.size();i++){for(int j=0;j<board.size();j++){//判断该位置是否为空if(board[i][j]=='.'){//遍历1-9,寻找符合条件的数字for(char c='1';c<='9';c++){if(isOK(board,c,i,j)){board[i][j]=c;//递归下一层,确定下一个空白处的值bool b=backtracking(board);//如果返回true,说明board中所有的值都已经被确定了if(b)   return true;board[i][j]='.';}}return false;}}}return true;}void solveSudoku(vector<vector<char>>& board) {backtracking(board);}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/283388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用drawio绘制依赖关系图

使用drawio绘制依赖关系图 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存…

libxls - 编译

文章目录 libxls - 编译概述笔记静态库工程测试控制台exe工程测试备注备注END libxls - 编译 概述 想处理.xls格式的excel文件. 查了一下libxls库可以干这个事. 库地址 https://github.com/libxls/libxls.git 但是这个库的makefile写的有问题, 在mingw和WSL下都编译不了. 好在…

【Python从入门到进阶】44、Scrapy的基本介绍和安装

接上篇《43.验证码识别工具结合requests的使用》 上一篇我们学习了如何使用验证码识别工具进行登录验证的自动识别。本篇我们开启一个新的章节&#xff0c;来学习一下快速、高层次的屏幕抓取和web抓取框架Scrapy。 一、Scrapy框架的背景和特点 Scrapy框架是一个为了爬取网站数…

Diva配置——Communication Tests

关联文章:CANoe.Diva生成测试用例 Diva目录 一、CANoe.Diva简介二、Communication Tests配置一、CANoe.Diva简介 CANoe.DiVa 是一种 CANoe 选项,用于对 ECU 中的诊断软件实施进行自动化测试。 可以通过CANdelaStudio制作的CDD或ODX文件,经过Diva配置自动生成测试用例和测试脚…

PyCharm community 安装教程

目录 链接cudatoolkit 下载地址&#xff1a;https://www.jetbrains.com/pycharm/download/other.html 双击打开 安装路径&#xff0c;可自行更换到D盘 不导入设置 链接cudatoolkit

Github 2023-12-18 开源项目周报 Top14

根据Github Trendings的统计&#xff0c;本周(2023-12-18统计)共有14个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目4Python项目4Jupyter Notebook项目3非开发语言项目1JavaScript项目1Rust项目1Go项目1 基于项目…

雷电4.0.50模拟器Android7.1.2安装xposed框架

官方论坛&#xff1a;https://xdaforums.com/t/official-xposed-for-lollipop-marshmallow-nougat-oreo-v90-beta3-2018-01-29.3034811/ Xposed 有分支 [EdXposed 和 LSPosed] 。 Edxposed框架现在支持android 8.0 - android 9.0 &#xff0c;如果是android 7.0或更早的版本&…

写好ChatGPT提示词原则之:清晰且具体(clear specific)

ChatGPT 的优势在于它允许用户跨越机器学习和深度学习的复杂门槛&#xff0c;直接利用已经训练好的模型。然而&#xff0c;即便是这些先进的大型语言模型也面临着上下文理解和模型固有局限性的挑战。为了最大化这些大型语言模型&#xff08;LLM&#xff09;的潜力&#xff0c;关…

威联通硬盘休眠后修改系统定时任务

按照网上一些教程&#xff0c;成功将威联通的机械硬盘设置了自动休眠。但是发现每天有多个整点硬盘会自动唤醒&#xff0c;怀疑是系统内置的定时任务触发了硬盘唤醒。 通过查看系统日志中事件和访问记录&#xff0c;判断出一些引发硬盘唤醒的自动任务&#xff0c;将这些定时任…

如何通过兴趣爱好选职业?

一个错误的选择&#xff0c;可能造成终身的遗憾&#xff0c;一个正确的选择&#xff0c;可以让我们少奋斗几十年。所以无论现在付出多少代价&#xff0c;多花一些时间&#xff0c;去研究以下未来的职业方向&#xff0c;这是值得的。 职业定位&#xff08;专业定位&#xff09;…

【漏洞复现】CVE-2023-39560:ECTouch V2电商系统SQL注入 附POC

漏洞描述 ECTouch是一款开源的电商系统,为中小企业提供最佳的新零售解决方案。采用稳定的MVC框架开发,执行效率、扩展性、稳定性值得信赖。MVC是一种将应用程序的逻辑层和表现层进行分离的方法。MVC分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。…

六:爬虫-数据解析之BeautifulSoup4

六&#xff1a;bs4简介 基本概念&#xff1a; 简单来说&#xff0c;Beautiful Soup是python的一个库&#xff0c;最主要的功能是从网页抓取数据官方解释如下&#xff1a; Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱…