【C++】-关于vector的两个习题(二维数组和多路递归)

news2024/10/6 2:30:05

💖作者:小树苗渴望变成参天大树🎈
🎉作者宣言:认真写好每一篇博客💤
🎊作者gitee:gitee✨
💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄
请添加图片描述
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!

文章目录

  • 前言
  • 一、[杨辉三角](https://leetcode.cn/problems/pascals-triangle/)
  • 二、[电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/)


前言

🎆上一期我们专门学习了vector是怎么使用的,今天我们来做两个题目,来将vector放到题目当中进行运用,这两个题目会涉及到二维数组,我会通过画图来给大家进行讲解,话不多说,我们进入正文


一、杨辉三角

✨对于杨辉三角的题目,大家在C语言阶段也做过,下面的动图很好的解释了杨辉三角的原理
在这里插入图片描述
这个动图不方便后面的讲解,我在画一个图:
在这里插入图片描述
对于这个题目就是先把第一列和对角线初始化为0,其余的在按照规则填写数字,我们来看代码实现:

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> v;
        v.resize(numRows);//先把多少行开好
        for(int i=0;i<numRows;i++)
        {
            v[i].resize(i+1,0);//每行开多大
             v[i][0]=1;//第一列初始化为1
            v[i][i]=1;//对角线初始化为1
        }
        for(int i=1;i<v.size();i++)
        {
            for(int j=1;j<v[i].size();j++)
            {
                if(v[i][j]==0)//为0的地方都是没有填的
                    v[i][j]=v[i-1][j-1]+v[i-1][j];//左上角和上面元素的和
            }
        }
        return v;
    }
};

我们直接返回这个二维数组就可以,对于我们的C语言使用二维数组解题,就方便很多,通过传的参数,我们就感觉头大,它要返回二级指针,多少行每行多少个都要记录下来。vector就很好的解决这个问题,让你不想碰C语言
在这里插入图片描述

二、电话号码的字母组合

🎈
在这里插入图片描述
来看图解:
在这里插入图片描述
我们来看代码实现:

class Solution {
    string strA[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};//使用下标将数字匹配的字母先存放起来,下标就对应相应的数字
public:
    vector<string> letterCombinations(string digits) {

        vector<string> v;
        if(digits.empty())//特殊情况
            return v;

        combineStr(digits,0,"",v);//从第0层开始匹配,一开始的字符串是空串
        return v;
    }
     void combineStr(string digits,int level,string combinestr,vector<string>& v)
    {//第一个参数是传进来的数字字符串
     //第二个参数是递归到多少层,有几个数字就有几层
     //第三个参数是存放单词匹配好的字符串,这里不能用引用,因为不能改变改变当前层的字母组合
     //第四个参数是存放匹配好的字符串的数组,因为要每次匹配好都要进行存放,所以传引用

        if(level==digits.size())//递归到最后一层的下一层开始返回
        {
            v.push_back(combinestr);
            return;
        }
        int nums=digits[level]-'0';//取出对应的数字
        string str=strA[nums];//数字对应的字符串
        for(int i=0;i<str.size();i++)//多路递归,之前的二叉树都是双路递归
        {
            combineStr(digits,level+1,combinestr+str[i],v);
        }
    }
};

递归展开图:

在这里插入图片描述
递归展开图只画了一次匹配,太多了画不下去,其余的都是一样的道理,这个题目难度还有的,大家下去好好理解一下

今天的两道题就讲解到这里了,讲解这个两个题目就是为了让大家认识到用vector怎么表示二维数组,并且知道vector是多么方便,如果大家不信,可以使用C语言进行写着两道题目看看,相信大家肯定会很难受,下一篇我就带大家模拟实现一下vector,看看vector的底层是怎么实现的吧,我们下篇再见请添加图片描述

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

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

相关文章

论文浅尝 | 少样本学习的语言模型的持续训练

笔记整理&#xff1a;王贵涛&#xff0c;东南大学硕士&#xff0c;研究方向为自然语言处理 链接&#xff1a;https://github.com/UIC-Liu-Lab/CPT 一、动机 克服灾难性遗忘&#xff08;CF&#xff09;是持续学习&#xff08;CL&#xff09;的一个主要目标。目前有许多方法&…

施密特(Gram-Schmidt)正交化

引自于点击打开 如果没有空间向量解析几何基础&#xff0c;理解起来有些困难&#xff0c;因此稍微解说一下。 两个向量的正交变换我们分为3步&#xff1a; &#xff08;a1,a1)/ (|a1| * |a2|)是a1,a2之间的夹角的cos值cos值乘以|a2|后&#xff0c;得到a2在a1上映射的长度值&…

从浏览器进程角度分析从输入URL到页面显示发生了什么?

一、处理用户在浏览器地址栏中输入的URL&#xff08;统一资源定位符&#xff09; 用户在地址栏输入内容并按下回车&#xff0c;浏览器会检查输入是否符合 URL 规则&#xff0c;以Chrome为例&#xff0c;它会根据相应的规则&#xff0c;将地址栏输入解析成搜索请求或者URI请求。…

YOLOv8实战垃圾分类目标检测 (视频课程)

课程链接&#xff1a;https://edu.csdn.net/course/detail/38804 垃圾分类是一项利国利民的民生工程&#xff0c;需要全社会的共同参与。 YOLOv8是前沿的目标检测技术&#xff0c;它基于先前 YOLO 版本在目标检测任务上的成功&#xff0c;进一步提升性能和灵活性。 本课程将手…

已解决 BrokenPipeError: [Errno 32] Broken pipe

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

第三次CCF计算机软件能力认证

第一题&#xff1a;门禁系统 涛涛最近要负责图书馆的管理工作&#xff0c;需要记录下每天读者的到访情况。 每位读者有一个编号&#xff0c;每条记录用读者的编号来表示。 给出读者的来访记录&#xff0c;请问每一条记录中的读者是第几次出现。 输入格式 输入的第一行包含一个整…

《前端开发 实践之 腾讯地图API 学习》

目录 腾讯地图基础入门方式一方式二 事件监听监听地图瓦片加载完成事件 移除缩放控件 & 旋转控件 & 比例尺控件初始化marker图层创建信息窗点击地图拾取坐标打点标记反解析成详细地址根据输入详细地址 反解析成经纬度 腾讯地图 腾讯地图API学习-官方地址&#xff1a;ht…

浅谈Web前端开发软件包管理器—Bower的基本使用

前言 Bower 是一个客户端的软件包管理器&#xff0c;它可用于搜索、安装和卸载如 JavaScript、HTML、CSS 之类的网络资源&#xff0c;Bower 是 Web 开发中的一个前端文件包管理器&#xff0c;类似于 Node 模块的 npm 包管理器&#xff0c;bower 依赖于 Git、Node 和 npm。 安…

HarmonyOS课程尝鲜计划,优享特权大礼包

报名入口&#xff1a;https://developer.huawei.com/consumer/cn/activity/901689042385499023

Mendix Excel导入组件的分析和应用

一、前言 企业在发展的过程中会使用各种各样的系统&#xff0c;其中很多系统用了5-10年&#xff0c;我们称之为遗留系统存在诸多风险&#xff1a;维护耗时、中断频繁、用户不友好、与新软件的兼容性问题等。总有一天&#xff0c;这些庞大的问题会垄断IT资源&#xff0c;使数字…

事物的属性与观察者有关吗?

我们通常对世界的看法是以分析和概念为基础的&#xff0c;我们倾向于将事物划分为各种相对的存在和概念。然而&#xff0c;有些领域超越了这种相对的观点&#xff0c;揭示了所有现象的无常性、空虚性和无自性&#xff0c;认识到它们的真实本质。如在人机环境系统中就认为&#…

【车载Android】多用户(一) - Linux用户与Android多用户

现如今手机这样的移动设备已经是人手一台了&#xff0c;但是汽车依然是以家庭为单位使用&#xff0c;不同的家庭成员对于汽车的使用存在着差异&#xff0c;比如空间、功能、影音风格等。因此&#xff0c;“智能汽车”需要具备千人千面的特性&#xff0c;能够适应不同的用户和场…

Linux中Makefile详细教程

目录 Makefile Makefile的介绍 Makefile简单的编写 .PHONY 问题&#xff1a; 如果只执行make&#xff0c;它执行的是Makefile里哪一段语句呢&#xff1f; 怎么知道我的可执行程序是最新的呢&#xff1f; Makefile编译多个文件 进度条小程序 Makefile Makefile的介绍 …

Acwing.860 染色法判定二分图(二分图染色法)

题目 给定一个n个点m条边的无向图&#xff0c;图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数n和m。 接下来m行&#xff0c;每行包含两个整数u和v&#xff0c;表示点u和点v之间存在一条边。 输出格式 如果给定图是二分图&#xff0c…

openpnp - 汇川 Inovance IS620PS2R8I-IAB-C的参数读取

文章目录 openpnp - 汇川 Inovance IS620PS2R8I-IAB-C的参数读取概述笔记伺服和配套电机型号官方伺服调试软件笔记H00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0FH11H12H16H17H30H31自定义组备注END openpnp - 汇川 Inovance IS620PS2R8I-IAB-C的参数读取 概述 设备中用到了…

Enterprise:使用 MySQL connector 同步 MySQL 数据到 Elasticsearch

Elastic MySQL 连接器是 MySQL 数据源的连接器。它可以帮我们把 MySQL 里的数据同步到 Elasticsearch 中去。在今天的文章里&#xff0c;我来详细地描述如何一步一步地实现。 在下面的展示中&#xff0c;我将使用 Elastic Stack 8.8.2 来进行展示。 无缝集成&#xff1a;将 Ela…

两只小企鹅(Python实现)

目录 1 和她浪漫的昨天 2 未来的旖旎风景 3 Python完整代码 1 和她浪漫的昨天 是的,春天需要你。经常会有一颗星等着你抬头去看&#xff1b; 和她一起吹晚风吗﹖在春天的柏油路夏日的桥头秋季的公园寒冬的阳台&#xff1b; 这世界不停开花&#xff0c;我想放进你心里一朵&#…

docker 里面各种 command not found 总结

一、ip&#xff1a;command not found 执行命令&#xff1a; apt-get update & apt-get install -y iproute2 二、yum&#xff1a;command not found 执行命令&#xff1a; apt-get update & apt-get install -y yum 三、ping&#xff1a;command not found 执行命…

113、基于51单片机的智能电子密码锁控制系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+设计资料+焊接指导书+元器件清单等)

摘 要 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。随着科学技术的不断发展&#xff0c;人们对日常生活中的安全保…

多元融合:流媒体传输网络的全盘解法

我们在寻找「网络」的全盘解法。 音视频数字化在消费领域的红利俨然见顶&#xff0c;而产业级视频应用激活了更多场景下的业务模式。与此同时&#xff0c;音视频客户也从单一的业务需求&#xff0c;趋向于多种业务并行存在的需求。 固有的网络能满足新兴的业态吗&#xff1f;延…