剑指offer12 矩阵中的路径 13 机器人的运动范围 34.二叉树中和为某一值得路径

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {int row=board.size(),col=board[0].size();int index=0,i=0,j=0;if(word.size()>row*col) return 0;//vector<vector<int>> visit[row][col];//标记当前位置有没有被访问过vector<vector<int>> visit(row,vector<int>(col));bool flag=1;while(i<row&j<col){cout<<"board[i][j]: "<<board[i][j]<<endl;if(board[i][j]==word[index]){flag=1;if(index==word.size()-1) return 1;cout<<word[index]<<endl;index++;visit[i][j]=1;if(i-1>=0&&board[i-1][j]==word[index]&&visit[i-1][j]!=1){cout<<"上"<<endl;i=i-1;j=j;}else if(i+1<row&&board[i+1][j]==word[index]&&visit[i+1][j]!=1){cout<<"下"<<endl;i=i+1;j=j;}else if(j-1>=0&&board[i][j-1]==word[index]&&visit[i][j-1]!=1){cout<<"左"<<endl;i=i;j=j-1;}else if(j+1<col&&board[i][j+1]==word[index]&&visit[i][j+1]!=1){cout<<"右"<<endl;i=i;j=j+1;}}else {if(j==col-1&&i<row)//如果到了一行的最后面就调转到下一行 大前提是找不到word[index]相等{cout<<"最末尾的 "<<board[i][j]<<endl;i++;j=0;}else j++;}} return 0;}
};
//写的有点问题,暂时想不到怎么改,先放着,通过用例71/83 卡住的是abcd 但是改了又有问题
无语 看了 答案 都写不对 在类成员里面定义了row和col 就不要重复定义了 不然不知道为什么就开始发疯
class Solution {
public:bool exist(vector<vector<char>>& board, string word) {rows=board.size();cols=board[0].size();for(int i=0;i<rows;i++){for(int j=0;j<cols;j++){if (dfs(board,word,i,j,0)) return true;}}return false;}
private:int rows,cols;bool dfs(vector<vector<char>>& board,string word,int i,int j,int k){if(i>=rows||i<0||j>=cols||j<0||board[i][j]!=word[k]) return false;if(k==word.size()-1) return true;board[i][j]='\0';bool res=dfs(board,word,i+1,j,k+1)||dfs(board,word,i-1,j,k+1)||dfs(board,word,i,j+1,k+1)||dfs(board,word,i,j-1,k+1);board[i][j]=word[k];return res;}
};

先贴出蠢货写出来的东西 审题也审不明白 机器人只能上下左右走 不能一行一行遍历 菜鸟总是这样 自己把自己搞破防
通过用列46/51
class Solution {
public:int movingCount(int m, int n, int k) {int index=0;for(int i=0;i<m;i++){if(add(i)>k) break;for(int j=0;j<n;j++){if(add(j)>k) break;int sum=add(i)+add(j);if(sum<=k) {index++;cout<<sum<<endl;}}}return index;}
private:int add(int x){int sum=0,num=0;while(x){num=x%10;x=x/10;sum+=num;}return sum;}
};
问题出在哪里呢!!!! 就是比如【10,0】虽然数位之和等于1,但是无法通过【9,0】或者其他走过去,假设k=1的话,也就是他妈的他有障碍物啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
aaaa继续做就是要判断边界条件啊啊啊啊啊啊啊啊啊啊啊啊就是判断他是否能进入4个相邻的格子
首先0,0必定可以嗷,check[0,0]置为1。0,0能走到0,1和1,0,那对于0,1和1,0两个点来说,就是判断他们的上面i-1和左边j-1是否可以走,如果可以那就可以从左边和上面分别走过来,能走到当前这个点就置为1,然后左边和上面能走的点都走了之后,还有两个方向没有判断 ,再来判断能不能从右边(i+1)走到左边,下面(i+1)走到上面,如果能走到当前点,就置为1,最后有多少个1,就有多少个机器人能走的格子。
class Solution {
public:int movingCount(int m, int n, int k) {int index=0;int check[m][n];//不能直接写check[m][n]也不能check[m][n]={0},第一次无法保证元素全为0 ,第二个会报错memset(check,0,sizeof(check));//memset进行内存清零,可以将一块内存设置为指定的值check[0][0]=1;for(int i=0;i<m;i++){for(int j=0;j<n;j++){int sum=add(i)+add(j);if(sum<=k) {if(i-1>=0&&check[i-1][j]==1||j-1>=0&&check[i][j-1]==1) check[i][j]=1;}}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){int sum=add(i)+add(j);if(sum<=k) {if(i+1<m&&check[i+1][j]==1||j+1<n&&check[i][j+1]==1) check[i][j]=1;}}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){int sum=add(i)+add(j);if(check[i][j]) {index++;}}}return index;}
private:int add(int x){int sum=0,num=0;while(x){num=x%10;x=x/10;sum+=num;}return sum;}
};

和上题目类似,属于典型的搜索&回溯算法
先了解一下BFS模板
不需要当前遍历到哪一层,BFS模板
while queue 不空cur=queue.front();queue.pop();for 结点 in cur的所有相邻节点if 该节点有效且没被访问过:queue.push(该结点)
需要确定遍历到哪一层,比如之前写过一题打印二叉链表
level=0
while queue不空:size=queue.size()while(size--){cur=queue.pop();for 结点 in cur的所有相邻结点:if 该节点有效且未被访问过:queue.push(该节点)}level++;
直接使用模板
算了dfs
class Solution {
public:int sum(int x){//计算数位和int count = 0;while(x){count += x%10;x /= 10;}return count;}int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};//左上右下int res = 0;int m , n , k;vector<vector<bool>>st;int movingCount(int _m, int _n, int _k) {
//m行n列
//不能进入行坐标和列坐标的"数位"之和大于k的格子
// i + j > km = _m, n = _n, k = _k;vector<vector<bool>>_st(m,vector<bool>(n));//初始化st = _st;return dfs(0,0);}int dfs(int x, int y){st[x][y]=true;res++;for(int i = 0 ;i < 4 ; i++){int a = x+dx[i] , b = y + dy[i];if(a >= 0 && a < m && b >= 0 && b < n && !st[a][b] && sum(a)+sum(b)<=k){dfs(a,b);//那么我们就渲染一下}}return res;}};
DFS解法
class Solution {
public:int movingCount(int m, int n, int k) {vector<vector<int>> check(m,vector<int>(n,0));//球球你了祖宗啊记住这个定义方式吧dfs(check,m,n,k,0,0);return result;}private:int result=0;int add(int x){int sum=0,num=0;while(x){num=x%10;x=x/10;sum+=num;}return sum;}void dfs(vector<vector<int>> &check,int m, int n, int k,int x,int y){int sum=add(x)+add(y);if(x<0||x>=m||y<0||y>=n||check[x][y]==1||sum>k) return ;result++;check[x][y]=1;dfs(check,m,n,k,x+1,y);dfs(check,m,n,k,x,y+1);}
};
BFS解法就见鬼去吧 不想写队列啊啊啊啊

class Solution {
public:vector<vector<int>> pathSum(TreeNode* root, int target) {if(!root) return result;dfs(root,target);return result;}
private:vector<vector<int>> result;vector<int> subresult;void dfs(TreeNode* root,int target){if(!root) return ;subresult.push_back(root->val);target-=root->val;if(root->left==nullptr&&root->right==nullptr&&target==0){result.push_back(subresult);}dfs(root->left,target);dfs(root->right,target);subresult.pop_back();//回溯}
};
相关文章:
剑指offer12 矩阵中的路径 13 机器人的运动范围 34.二叉树中和为某一值得路径
class Solution { public:bool exist(vector<vector<char>>& board, string word) {int rowboard.size(),colboard[0].size();int index0,i0,j0;if(word.size()>row*col) return 0;//vector<vector<int>> visit[row][col];//标记当前位置有没有…...
Pushgateway+Prometheus监控Flink
思路方案 FlinkMtrics->pushgateway->prometheus->grafnana->altermanager 方案 : Flink任务先将数据推到pushgateway。然后pushgateway将值推送到prometheus,最后grafana展示prometheus中的值, 去这个 https://prometheus.io/download/ 下载最新的 Prometheu…...
OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG
视频分割背景 1.概念介绍2. 函数介绍MOG算法MOG2算法GMG算法 原视频获取链接 1.概念介绍 视频背景扣除原理:视频是一组连续的帧(一幅幅图组成),帧与帧之间关系密切(GOP/group of picture),在GOP中,背景几乎…...
nginx 反向代理浅谈
前言 通常情况下,客户端向Web服务器发送请求,Web服务器响应请求并返回数据。而在反向代理中,客户端的请求不直接发送到Web服务器,而是发送到反向代理服务器。反向代理服务器会将请求转发给真实的Web服务器,Web服务器响…...
【概率预测】对风力发电进行短期概率预测的分析研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
原型设计模式go实现尝试
文章目录 前言代码结果总结 前言 本文章尝试使用go实现“原型”。 代码 package mainimport ("fmt" )// 不同原型标志枚举 type Type intconst (PROTOTYPE_1 Type iotaPROTOTYPE_2 )// 原型接口 type IPrototype interface {Clone() IPrototypeMethod(value int)P…...
链表是否有环、环长度、环起点
问题引入 如何检测一个链表是否有环,如果有,那么如何确定环的长度及起点。 引自博客:上述问题是一个经典问题,经常会在面试中被问到。我之前在杭州一家网络公司的电话面试中就很不巧的问到,当时是第一次遇到那个问题&…...
有效文档管理离不开这几个特点
在我们日常生活中经常会遇到各式各样的文档类型,想要把它们都统一管理起来也不是一件容易的事情。后来looklook就去研究怎么样可以把这一堆文档整理起来呢?接下来,looklook就从有效的文档管理展开,和大家分享一下! 有效…...
爬虫-requests-cookie登录古诗文网
一、前言 1、requests简介 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,它是python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib更简洁也更强大。 2、requests的安装 pip i…...
Spring Boot实践三 --数据库
一,使用JdbcTemplate访问MySQL数据库 1,确认本地已正确安装mysql 按【winr】快捷键打开运行;输入services.msc,点击【确定】;在打开的服务列表中查找mysql服务,如果没有mysql服务,说明本机没有…...
分布式锁漫谈
简单解释一下个人理解的分布式锁以及主要的实现手段。 文章目录 什么是分布式锁常用分布式锁实现 什么是分布式锁 以java应用举例,如果是单应用的情况下,我们通常使用synchronized或者lock进行线程锁,主要为了解决多线程或者高并发场景下的共…...
mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目
m系列 mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目 gptlink 项目是一个前后端一体化的 chatgpt 开源项目 gptlink 项目地址:https://github.com/gptlink/gptlink 安装 php 8.0 版本: brew install php8.0安装完成后提示如下ÿ…...
ansible中run_once的详细介绍和使用说明
在Ansible中,run_once是一个用于控制任务在主机组中只执行一次的关键字参数。当我们在编写Ansible任务时,有时候我们希望某个任务只在主机组中的某个主机上执行一次,而不是在每个主机上都执行。 以下是run_once参数的详细说明和用法…...
短视频矩阵系统源码开发流程
一、视频矩阵系统源码开发流程分为以下几个步骤: 四、技术开发说明: 产品原型PRD需求文档产品交互流程图部署方式说明完整源代码源码编译方式说明三方框架和SDK使用情况说明和代码位置平台操作文档程序架构文档 一、抖音SEO矩阵系统源码开发流程分为以…...
vite+vue3 css scss PC移动布局自适应
1. 安装 postcss-pxtorem 和 autoprefixer npm install postcss-pxtorem autoprefixer --save2. vite.config.js引入并配置 import postCssPxToRem from postcss-pxtorem import autoprefixer from autoprefixerexport default defineConfig({base: ./,resolve: {alias},plug…...
BLE配对和绑定
参考:一篇文章带你解读蓝牙配对绑定 参考:BLE安全之SM剖析(1) 参考:BLE安全之SM剖析(2) 参考:BLE安全之SM剖析(3) 目录 前言基本概念解读Paring(配对)Bonding(绑定)STK短期秘钥、LTK长期秘钥等 …...
无涯教程-jQuery - html( val )方法函数
html(val)方法设置每个匹配元素的html内容。此属性在XML文档上不可用。 html( val ) - 语法 selector.html( val ) 这是此方法使用的所有参数的描述- val - 这是要设置的html内容。 html( val ) - 示例 以下是一个简单的示例,简单说明了此方法的用法- <…...
【单链表OJ题:删除链表中等于给定值 val 的所有节点】
1.删除链表中等于给定值 val 的所有节点 题目来源 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 /*** Definition for singly-linked list.* struct ListNode {* int val;* s…...
vue element ui web端引入百度地图,并获取经纬度
最近接到一个新需要,要求如下: 当我点击选择地址时,弹出百度地图, 效果如下图: 实现方法: 1、首先要在百度地图开放平台去申请一个账号和key 2、申请好之后,在项目的index.html中引入 3、…...
25.10 matlab里面的10中优化方法介绍—— 函数fmincon(matlab程序)
1.简述 关于非线性规划 非线性规划问题是指目标函数或者约束条件中包含非线性函数的规划问题。 前面我们学到的线性规划更多的是理想状况或者说只有在习题中,为了便于我们理解,引导我们进入规划模型的一种情况。相比之下,非线性规划会更加贴近…...
用C语言解决‘换硬币’问题?我来教你如何调试和验证你的循环逻辑
用C语言解决‘换硬币’问题?我来教你如何调试和验证你的循环逻辑 当你第一次面对"换硬币"这类组合问题时,那种既兴奋又困惑的感觉我至今记忆犹新。作为C语言初学者,理解多重循环的运作机制就像在迷宫中寻找出口——每次你以为找到了…...
浅聊26上半年软考架构师
2026年上半年架构师考试已然落幕,大家都考的如何?架构师共有三门考试,上午综合知识(75道选择题)案例分析,时间为8.30-12.30;下午论文,时间为14.30-16.30。下面说说我整体的备考过程。…...
软阴影:那个让虚拟世界“温柔起来“的光影小秘密
一、从一只小猫的影子说起 前几天我在朋友家做客,他家养了一只胖乎乎的橘猫,正趴在阳台的窗边晒太阳。我无意间瞥了一眼那只猫脚边的影子,突然被一个细节震撼了—— 那只猫的影子——并不是一片均匀的黑。 仔细看——猫肚子紧贴地板的地方——…...
利用DiSEqC协议与AVR单片机驱动卫星天线电机改造户外设备
1. 项目概述:用卫星天线电机驱动一切如果你手头有一些需要承受风吹日晒、还得精确转动的设备,比如一个户外的大型定向天线,或者一个需要定期调整角度的太阳能板支架,甚至是一个坚固的监控云台,你可能会为驱动机构发愁。…...
基于随机森林的低成本传感器机器学习校准实践指南
1. 项目概述:当低成本传感器遇上机器学习校准在物联网和智能感知系统铺天盖地的今天,低成本传感器几乎无处不在。从监测办公室的空气质量,到追踪城市街道的噪音污染,再到农业大棚里的温湿度控制,这些价格亲民的“小眼睛…...
基于USB ACA模式实现安卓手机边玩边充的游戏手柄设计
1. 项目缘起:当手机性能过剩,却败给了触摸屏几年前,我清理手机游戏时,发现一个挺无奈的现象:性能足以媲美掌机的智能手机里,只剩下一些慢节奏的平台解谜或者数独。那些曾经让我在掌机上废寝忘食的赛车、动作…...
如何用Python脚本榨干百度网盘带宽:pan-baidu-download终极指南
如何用Python脚本榨干百度网盘带宽:pan-baidu-download终极指南 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download 在数字时代,百度网盘已成为我们存储和分享大型文件的默认…...
03 - 变量与数据类型
03 - 变量与数据类型 变量是编程里最基础的概念,相当于你往电脑里存东西的"容器"。这章我们把变量的命名规则、Python 的几种基本数据类型都过一遍。 变量是什么 说白了,变量就是一个有名字的盒子。你往里面放个东西,以后想用这个…...
【DeepSeek漏洞扫描辅助实战指南】:20年安全专家亲授3大避坑法则与5步提效流程
更多请点击: https://intelliparadigm.com 第一章:DeepSeek漏洞扫描辅助的核心价值与适用边界 DeepSeek漏洞扫描辅助并非通用型渗透测试引擎,而是一个聚焦于大语言模型(LLM)应用层安全的轻量级分析工具。其核心价值在…...
Unity塔防底层架构:ScriptableObject驱动的数据契约设计
1. 这不是“又一个塔防模板”,而是塔防开发的底层操作系统我第一次在Asset Store点开Tower Defense Toolkit 4(TDTK-4)的预览图时,下意识划走了——界面太“干净”了,没有炫酷的粒子特效演示,没有满屏飞舞的…...
