leetcode算法题之递归--综合练习(二)

本章目录

  • 1.N皇后
  • 2.有效的数独
  • 3.解数独
  • 4.单词搜索
  • 5.黄金矿工
  • 6.不同路径III

1.N皇后

N皇后
在这里插入图片描述

class Solution {vector<vector<string>> ret;vector<string> path;int n;bool checkCol[10],checkDig1[20],checkDig2[20];
public:vector<vector<string>> solveNQueens(int _n) {n = _n;//初始化pathpath.resize(n);for(int i=0;i<n;i++){path[i].append(n,'.');}dfs(0);return ret;}void dfs(int row){if(row == n){ret.push_back(path);return;}for(int col = 0;col<n;col++){if(!checkCol[col]&& !checkDig1[col-row+n] && !checkDig2[col+row]){path[row][col] = 'Q';checkCol[col] = checkDig1[col-row+n] = checkDig2[col+row] = true;dfs(row+1);path[row][col] = '.';checkCol[col] = checkDig1[col-row+n] = checkDig2[col+row] = false;}}}
};

2.有效的数独

有效的数独
在这里插入图片描述

class Solution {bool row[9][10];bool col[9][10];bool grid[3][3][10];
public:bool isValidSudoku(vector<vector<char>>& board) {for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(board[i][j]!='.'){int num = board[i][j]-'0';if(row[i][num] || col[j][num] || grid[i/3][j/3][num]){return false;}row[i][num] = col[j][num] = grid[i/3][j/3][num] = true;}}}return true;}
};

3.解数独

解数独
在这里插入图片描述

class Solution {bool row[9][10];bool col[9][10];bool grid[3][3][10];
public:void solveSudoku(vector<vector<char>>& board) {//初始化一下row,col,grid数组for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(board[i][j]!='.'){int num = board[i][j]-'0';row[i][num] = col[j][num] = grid[i/3][j/3][num] = true;}}}dfs(board);}bool dfs(vector<vector<char>>& board){for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(board[i][j]=='.'){for(int k=1;k<=9;k++){if(!row[i][k] && !col[j][k] && !grid[i/3][j/3][k]){board[i][j] = '0'+k;row[i][k] = col[j][k] = grid[i/3][j/3][k] = true;if(dfs(board) == true) return true;board[i][j] = '.';row[i][k] = col[j][k] = grid[i/3][j/3][k] = false;}}return false;}}}return true;}
};

4.单词搜索

单词搜索
在这里插入图片描述

class Solution {int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};bool vis[7][7];int m,n;
public:bool exist(vector<vector<char>>& board, string word) {m = board.size(), n = board[0].size();for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(board[i][j] == word[0]){vis[i][j] = true;if(dfs(board,i,j,word,1)==true) return true;vis[i][j] = false;}}}return false;}bool dfs(vector<vector<char>>& board,int i,int j,string& word,int pos){if(pos == word.size()){return true;}for(int k=0;k<4;k++){int x = i+dx[k],y = j+dy[k];if(x>=0 && x<m && y>=0 && y<n && !vis[x][y]&& board[x][y] == word[pos]){vis[x][y] = true;if(dfs(board,x,y,word,pos+1)) return true;vis[x][y] = false;}}return false;}
};

5.黄金矿工

黄金矿工
在这里插入图片描述

class Solution {int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};bool vis[16][16];int m,n;int ret = 0;
public:int getMaximumGold(vector<vector<int>>& grid) {//暴搜,每个点都进行一次深搜m = grid.size(),n = grid[0].size();for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j]){vis[i][j] = true;dfs(grid,i,j,grid[i][j]);vis[i][j] = false;}}}return ret;}void dfs(vector<vector<int>>& grid,int i,int j,int path){ret = max(ret,path);for(int k=0;k<4;k++){int x = i+dx[k],y = j+dy[k];if(x>=0 && x<m && y>=0 && y<n && !vis[x][y] && grid[x][y]!=0){vis[x][y] = true;dfs(grid,x,y,path+grid[x][y]);vis[x][y] = false;}}}
};

6.不同路径III

不同路径III
在这里插入图片描述

class Solution {int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};vector<vector<bool>> vis;int m,n,step;int ret;
public:int uniquePathsIII(vector<vector<int>>& grid) {m = grid.size(),n = grid[0].size();vis = vector<vector<bool>>(m,vector<bool>(n));int bx,by;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(grid[i][j] == 0) step++;else if(grid[i][j] == 1){bx = i;by = j;}}}step += 2;vis[bx][by] = true;dfs(grid,bx,by,1);return ret;}void dfs(vector<vector<int>>& grid,int i,int j,int count){if(grid[i][j] == 2){if(count == step) ret++;return;}for(int k=0;k<4;k++){int x = i+dx[k],y = j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&!vis[x][y] && grid[x][y]!=-1){vis[x][y] = true;dfs(grid,x,y,count+1);vis[x][y] = false;}}}
};

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

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

相关文章

Android 13.0 SystemUI状态栏居中显示时间和修改时间显示样式

1.概述 在13.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了 效果图如下: 2.SystemUI状态栏居中显…

conda安装transformers、wordcloud库

conda安装transformers库 使用 conda 自 Transformers 4.0.0 版始&#xff0c;我们有了一个 conda 频道&#xff1a; huggingface。 &#x1f917; Transformers 可以通过 conda 依此安装&#xff1a; conda install -c huggingface transformers安装起来就很通畅 conda查看…

NGINX 配置本地HTTPS(免费证书)

生成秘钥key,运行: $ openssl genrsa -des3 -out server.key 2048 会有两次要求输入密码,输入同一个即可。输入密码然后你就获得了一个server.key文件。 以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令: $ op…

【JVM】一篇通关JMM内存模型

JMM内存模型 1. 原子性1-1. 问题分析1-2. 问题解决 2. 可见性2-1. 问题分析2-2. 问题解决 3. 有序性3-1. 问题分析3-2. 问题解决 4. CAS与原子性5. synchronized 优化 1. 原子性 很多人将【java 内存结构】与【java 内存模型】傻傻分不清&#xff0c;【java 内存模型】是 Java…

C++ queue

目录 一、介绍 二、queue使用 三、模拟实现 四、优先级队列 五、priority_queue使用 OJ题&#xff1a;215. 数组中的第K个最大元素 快速排序 优先级队列 TOPK 六、模拟实现priority_queue 1、仿函数 2、优先级队列类 3、测试函数 一、介绍 1、队列是一种容器适配器…

【React系列】高阶组件

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 高阶组件 1.1. 认识高阶组件 什么是高阶组件呢&#xff1f;相信很多同学都听说过&#xff0c;也用过 高阶函数&…

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系”

macOS 老版本系统恢复中出现“MacBook Pro无法与恢复服务器取得联系” 网络问题系统时间问题镜像索引问题 网络问题 系统时间问题 镜像索引问题 恢复模式的 “实用工具 > 系统终端” 里执行如下 nvram IASUCatalogURLhttps://swscan.apple.com/content/catalogs/others/i…

Vue页面传值:Props属性与$emit事件的应用介绍

一、vue页面传值 在Vue页面中传值有多种方式&#xff0c;简单介绍以下两种 通过props属性传递值&#xff1a;父组件在子组件上定义props属性&#xff0c;子组件通过props接收父组件传递的值。通过$emit触发事件传递值&#xff1a;子组件通过$emit方法触发一个自定义事件&#…

20.扫雷

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int[][] f new int[n][m];for(int i0;i<n;i) {for(int j0;j<m;j) {f[i][j] sc.nextInt()…

TS学习笔记一:认识TS及环境准备

本次学习笔记是具有一定js基础的情况下从头开始学习ts相关内容。 视频信息 TS学习笔记一&#xff1a;认识TS及环境准备 B站视频 TS学习笔记一&#xff1a;认识TS及环境准备 西瓜视频 https://www.ixigua.com/7320049274006274560 1.1.目的 通过本次学习&#xff0c;学习并…

养乐多公司确认 95 G 用户私密数据被泄露

一名自称为DragonForce的组织声称已经公开泄露了澳大利亚养乐多公司&#xff08;Yakult Australia&#xff09;的95.19 GB数据。Yakult Australia证实了这次网络攻击的真实性&#xff0c;并表示公司在澳大利亚和新西兰的IT系统都受到了影响。 该公司在一份声明中表示&#xff…

21.串的处理

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String str sc.nextLine();char[] c str.toCharArray();int n c.length;StringBuilder st new StringBuilder();int i 0;while(i<n)…

C++学习笔记 ——this指针+对象数组

目录 一、Cthis指针 二、this指针的一个案列 三、对象数组 四、对象数组代码案列详解 一、Cthis指针 C中的this指针是一个特殊的指针&#xff0c;它指向当前对象的地址。在类中的成员函数中&#xff0c;this指针可以用来访问当前对象的成员变量和成员函数。 当我们调用一…

轻松玩转书生·浦语大模型趣味Demo

轻松玩转书生浦语大模型趣味Demo 大模型及InternLM模型介绍InternLM模型全链路开源 InternLM-Chat-7B智能对话Demo模型介绍模型部署webDemo运行 Lagent智能体工具调用DemoLagent介绍 浦语灵笔图文创作理解Demo通用环境配置模型下载 大模型及InternLM模型介绍 人工智能领域中 参…

shell 计算两个数据百分比,bc高级运算,bc计算系统磁盘剩余内存

目录 安装运算工具 bc使用方法高级数学库 (直接把公式 给他即可)计算百分比计算内存已经使用的百分比计算圆周率 安装运算工具 bc yum -y install bc使用方法 echo $((10/3)) | bc高级数学库 (直接把公式 给他即可) echo $((24)) | bc -l计算百分比 这里是 bc 的用法 也是计…

深度学习 Day24——J3-1DenseNet算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

「Verilog学习笔记」编写乘法器求解算法表达式

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule calculation(input clk,input rst_n,input [3:0] a,input [3:0] b,output [8:0] c);reg [8:0] data1, data2 ; assign c data2 ; always (posed…

猫咪主食罐头巅峰、希喂、K9哪款好?猫咪主食罐头真实对比测评

在当前科学喂养观念广泛传播的背景下&#xff0c;铲屎官们对猫咪主食的营养价值和健康性有了更高的要求。作为猫咪日常成长和活动的主要能量来源&#xff0c;主食的营养价值对猫咪的健康状况有着直接的影响。特别是对于处于成长期的猫咪来说&#xff0c;选择一款优质的主食对其…

关键词优化完整 “操作 “指南

关键词优化的定义 在内容中突出相关关键词的行为&#xff0c;有助于将谷歌流量引向您的网站。关键词优化要求内容创建者做到以下几点&#xff1a; 研究并发现最佳关键词找到自然的方式在内容中突出相关词语 看看&#xff0c;你已经创建了一些很棒的内容。你做了研究&#xf…

K8S部署GitLab

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…