c++----杨辉三角(补充)

news2024/11/24 12:39:01

        大家好。今天我给大家带来的是,我们以前讨论过的知识点。杨辉三角。我相信大家在c的学习中已经清楚的了解和认识到了杨辉三角的实现逻辑和实现方法了。但是应该大多局限于在c中吧。我们都知道我们c++与c其实在一些地方是可以相互成就的。那么我们在c中的经典题目杨辉三角也可以用更加简洁方便的实现方法。所以今天我们就是来看看杨辉三角用c++如何实现和用c++实现的话会比c方便多少。

简单介绍杨辉三角

       虽然是各位大佬都是知道杨辉三角了,但我想应该有忘掉的吧。为了保险起见我还是再给大家简绍一下,加深映像。相当于大家在复习一遍了。

        那么我们还是先来看看杨辉三角长什么样子:

        这里我们可以清楚看到我们的杨辉三角几个规律。第一个就是从头开始两边都是1就是每一行的开头与结尾都是1。然后就是第n行那么n行就有n个数。最后就是除了开头与结尾的值是确定的外,第n行的j的大小为上一行的j减一与上一行的第j个数的相加。我个人认为知道这三个规律大家应该就对实现杨辉三角和杨辉三角的基本认识就很清楚了。

        然后就是实现这个代码的大概步骤了。首先我们要知道我们我们为什么要在简单了解vector后才开始写我们的杨辉三角,这就表明用vector的相关知识的话我们实现杨辉三角会简单很多。所以我把实现杨辉三角放在了vector后面。其次就是我们大概都了解如果实现杨辉三角多半要用二维数组吧。那么我们如何在c++中实现二维数组。最后就是我们如何实现我们前面的逻辑将每一行的头与尾都变为1然后中间的值改为上一行前两个值相加的和。

实现杨辉三角

        那么我们在上面理出来了我们要实现杨辉三角的三个疑问了。那么我们就一一来处理。首先我们说过我们要使用vector中的向量,那么我们是不是要将vector在文章开头声明啊。

        然后我们定义了vector的头文件后,我们就来想想,我们实现的话就用类对象,是吧。我们在c++开篇时候的博客中写过的。主要是我们需要想在c++中怎么实现二维数组。我们知道在c中的二维数组是int arr[i][j]就定义出来了。但是我们在c++中并且用vector的相关知识如何定义实现出来咧。我们知道,我们前面的博客中写了,我们vector构造函数的方法。我们写的样子是:

        vector加一个<>括号里面跟数据类型。那么我们就创建了一个一维数组出来,那么我们二维数组的话,简单的想是不是多写一个<>就可以了呀,在里面写出vector啊。哈哈,其实大家不要想的太难了。就是这样写的

         我们在一维数组前面在套一个vector<>这样我们就创建了一个vector的int类型二维数组。然后大家看我们在vv后面的小括号里面。按c的道理说,这个地方我们应该写几行几列的,但是我们这里的例子如果按顺序来看的话,我们是不是只把几行写出来了,就连几列的位置都没有留出来,说明我们可以在后面补充我们没一行有多少列。由于我们这里是引用的一个测试题的题目来的,所以有几行已经确定了,所以我们就不自己改了,后面大家如果在自己实现的话,可以尝试cin来自己输入多少行。

        好了,我们这里既然已经确定了我们三个问题中的两个,一个是vector的引用,一个是二维数组的创建。好了,当我们看到这里我们就可以来确确实实的实现我们的c++杨辉三角了。

       我们简单的看,我们已经将二维数组确定了,那么我们在实现的时候可以先从简单的开始,比如我们先将我们每一行有多少列实现出来啊,是吧。就是每一行有多少个数。这个也是很简单的噶。我们用一个循环来搞定,以下标为0开始那么我们没一行都是下标加1了,具体如何实现,大家看看下面的照片:

       我们开前面说过我们要用到vector的相关知识这不,就出来了。我们的resize,在vector中作用可以理解为指定改变空间大小,如果原有的空间大小大于我现在设置的空间的大小的话那么就会删除对于的部分,如果小于的话就会扩大。并且我们如果在后面写了其他的初始化数据的话,也会在空间改变的时候对内存进行初始化。那么解读上面的图片的话就是,在vv的每一行开辟i+1个空间并且初始化为1。然后这里的思路就是,我将每一列的值都改为1,反正我改变值从上往下的,那么第二行改了,那么第三行也会在下一个循环被改变。当然然还可以分开写就是:

        我们在捣鼓空间的时候不初始化,然后我们就将开头与结尾的值改为1就可以了,简单的写法就是我们被注释掉的部分。然后比较装逼的写法就是我们下面的样子front和back相当于我们的begin和end。这行代码的解读就是每一行的开头和结尾都改为1。这样我们实现每一行的开头与结尾为1的方法就有三种了。并且也将每一行有多少列实现了。

       剩下的就是我们中间需要稍微计算的值了。但是这个很简单啊。是吧。二维数组嘛。并且我们在前面说过了其中的规律了,就是第n行的j的大小为上一行的j减一与上一行的第j个数的相加。那么两个for然后去掉每一行的开头与结尾其他的进行上面的公式相加就可以了。那么我们看看图片吧:

        这里就简单了,我们因为知道我们第一行与第二行都是一,并且我们已经确定了值那么就可以不用进入循环了,然后就是我们每一行的开头与结尾也确定了,所以我们可以在第二行中剔出来。其他的就是我们要实际计算的位置了。

        然后就是因为我们这里是为了应对题目所以在最后打印什么的就没有考虑,大家如果想要实现打印出来的话只需要在后面再写一个for循环来打印就可以了。

总结

       c++实现杨辉三角其实不难,主要是我们不知道如何在c++中创建c++中的二维数组,和使用方法。还有我们对前面讲过的两个库函数的了解程度不够,所以我们对用c++实现的时候暂时不知道如何应对。其他的就没什么了,只需要我们有时间的话多看看文档,这些就解决了。当然实现杨辉三角的方法有很多,我们这里刚好讲了vector所以我就用了vector的相关知识。大家如果还有其他的想法和补充的话可以在评论区补充。٩꒰▽ ꒱۶⁼³₌₃ 学习去咯。

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

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

相关文章

自定义实现log4j的appender

log4j&#xff0c;应用最广泛的日志框架。其作者后来推出logback&#xff0c;也是好选择。不多说废话。 log4j组件介绍 Log4j主要有三个组件&#xff1a; Logger&#xff1a;负责供客户端代码调用&#xff0c;执行debug(Object msg)、info(Object msg)、warn(Object msg)、err…

oracle----undo表空间

文章目录 undo表空间概念和作用undo表空间主要用于解决&#xff1a;1.1 读一致性1.2 回滚事务1.3 实例恢复 undo表空间操作查看UNDO表空间查看UNDO 参数查看undo表空间文件位置 undo表空间概念和作用 对于DML语句&#xff0c;只要修改了数据块&#xff0c;数据库就会把修改前的…

使用Amazon SageMaker JumpStart微调Meta Llama 3.1模型以进行生成式AI推理

文章目录 使用Amazon SageMaker JumpStart微调Meta Llama 3.1模型以进行生成式AI推理Meta Llama 3.1SageMaker JumpStartSageMaker JumpStart中Meta Llama 3.1模型的微调配置使用SageMaker JumpStart UI进行无代码微调使用SageMaker JumpStart SDK进行微调结论 使用Amazon Sage…

电商数据整合新篇章:京东商品详情API返回值应用实践

电商数据整合在当今商业环境中具有重要地位&#xff0c;API&#xff08;应用程序编程接口&#xff09;提供了高效收集、整合和分析数据的途径。以京东商品详情API为例&#xff0c;通过其返回值&#xff0c;电商企业可以构建更精准的营销策略、优化产品以及提升用户体验。以下是…

实例分割【YOLOv8版】

参考文档 Segment - Ultralytics YOLO Docs​docs.ultralytics.com/tasks/segment/ 何为实例分割&#xff1f; 实例分割比目标检测更进一步&#xff0c;涉及识别图像中的各个对象并将它们与图像的其余部分分割开来。 实例分割模型的输出是一组用于勾勒图像中每个对象的掩码…

回溯法-图的m着色问题

图的 m 着色问题 问题描述 给定一个无向连通图 ( G (V, E) ) 和 ( m ) 种颜色&#xff0c;我们的任务是为图 ( G ) 的每个顶点着色&#xff0c;使得相邻的顶点颜色不同。如果存在这样的着色方案&#xff0c;我们称之为图 ( G ) 的 ( m ) 可着色问题。 算法思路 初始化&…

Sentence-BERT实现文本匹配【回归目标函数】

引言 上篇文章我们通过Sentence-Bert提出的分类目标函数来训练句子嵌入模型&#xff0c;本文同样基于Sentence-Bert的架构&#xff0c;但改用回归目标函数。 架构 如上图&#xff0c;计算两个句嵌入 u \pmb u u和 v \pmb v v​之间的余弦相似度&#xff0c;然后可以使用均方误…

如何通过住宅代理优化SERP表现:提升SEO排名的实用指南

引言 什么是SERP&#xff1f;包含哪些内容&#xff1f; 为什么SERP对SEO至关重要&#xff1f; 如何优化SERP表现&#xff1f; 总结 引言 在当今竞争激烈的数字营销环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为企业提升在线可见性和吸引有机流量的关键…

matlab2024a/2023/2022/2020/matlab2019 如何plot画局部放大图(已解决)

matlab 2024&#xff1b;matlab 2023&#xff1b;matlab 2022&#xff1b;matlab 2021&#xff1b;matlab 2020&#xff1b;matlab 2019 matlab 2017一下的 使用magnify.m 进行局部放大图操作是没有问题的。 新版本 采用magnify.m 很难操作。 为什么要局部放大 局部方…

【王树森】Few-Shot Learning (3/3):Pretraining + Fine Tuning(个人向笔记)

Preliminary Few-Shot Learning 很简单&#xff0c;但是却能达到比较高的准确度&#xff0c;相反一些复杂的模型反而不能达到很高的准确率 1. Cosine Similarity 余弦相似度可以衡量两个向量的相似度 假设两个向量的长度都是1&#xff1a;那么它们余弦相似度的计算方法如下…

HarmonyOS开发实战( Beta5版)线程间通信场景最佳实践

简介 在应用开发中&#xff0c;经常会需要处理一些耗时的任务&#xff0c;如果全部放在主线程中执行就会导致阻塞&#xff0c;从而引起卡顿或者掉帧现象&#xff0c;降低用户体验&#xff0c;此时就可以将这些耗时操作放到子线程中处理。通常情况下&#xff0c;子线程可以独立…

bcftools报错|The sequence “chr1“ not defined in the header: chr1.recode.vcf

1、报错信息 The sequence "chr1" not defined in the header: chr1.recode.vcf (Quick workaround: index the file.) 所使用的命令&#xff0c;目的是想合并所提取的特定染色体。 bcftools concat -O v / -o varscan.indel_merged.vcf chr1.recode.vcf chr2.reco…

超好用的图纸加密软件排行榜 | 2024图纸加密软件的七款最优选择!

数字化设计日益普及的今天&#xff0c;图纸作为设计与工程的核心载体&#xff0c;其安全性成为了企业和设计师们最为关注的焦点之一。 面对日益复杂的数据泄露风险&#xff0c;如何有效地保护图纸文件的安全呢&#xff1f; 下面&#xff0c;我们就来探讨一下2024图纸加密软件的…

Python的10个文件对比与合并高效策略

文末赠免费精品编程资料~~ 在日常编程或数据分析工作中&#xff0c;经常需要处理多个文件的对比与合并任务。Python因其强大的文件处理能力和丰富的库支持&#xff0c;成为了处理这类任务的理想选择。下面&#xff0c;我们将逐步探索10种高效的文件对比与合并策略&#xff0c;…

OpenGL/GLUT实践:粒子系统,并添加纹理、动态模糊、边界碰撞(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub&#xff1a;A-UESTCer-s-Code 文章目录 1 运行效果2 实验过程2.1 基本粒子系统2.1.1 定义粒子结构2.1.2 创建粒子并初始化2.1.2.1 创建粒子2.1.2.2 初始化 2.1.3 粒子状态更新与绘制2.1.3.1 绘制2.1.3.2 更新 2.1.4 实现效果 2.2 添加纹理2.2.1 纹理添加2.2.2 渲染…

PostgreSQL + PostGIS:空间数据存储及管理解决方案

在数据库领域&#xff0c;PostgreSQL 已成为最强大、最通用的选项之一。它管理大量数据的能力、对 SQL 标准的遵守以及可扩展的架构使其受到学术界和工业界的喜爱。然而&#xff0c;真正让 PostgreSQL 脱颖而出的原因之一是它与PostGIS的集成&#xff0c;这是一个允许您有效处理…

第七课,条件表达式与初识分支判断

一&#xff0c;什么是判断 判断&#xff0c;就是在做某件事前&#xff0c;先问问满不满足条件。 进行逻辑判断&#xff0c;是生活中常见的行为。 “今天出门你要带伞吗&#xff1f;” “那得看天气怎么样&#xff0c;如果下雨或者太阳太大就带伞&#xff0c;否则就不带。”…

内存卡乱码问题解析恢复方案

一、内存卡乱码现象探析 在数字化时代&#xff0c;内存卡作为便携式数据存储设备&#xff0c;广泛应用于手机、相机、行车记录仪等多种电子设备中。然而&#xff0c;不少用户在使用过程中会遇到内存卡乱码的问题&#xff0c;即原本有序存储的文件突然变得无法识别&#xff0c;…

【前端面试】设计循环双端队列javascript

题目 https://leetcode.cn/problems/design-circular-deque/description/ 存储循环队列的向量空间是循环的,用通俗的话来讲,就是我们在做next或者prev操作时,不会发生溢出 取模、或者直接判断是否为0/size返回一个值。 数组实现 用函数来实现一个类,定义容量、头尾指针…

青远生态为云南林业规划院定制开发的自然保护地规划智能编制系统顺利通过验收

8月30日&#xff0c;青远生态为云南省林业调查规划院开发的自然保护地规划智能编制系统顺利通过验收。该系统具有智能推荐规划内容、自动生成投资估算表、智能编制规划报告等功能&#xff0c;集合了拉丁名填充、表格制作等丰富实用的工具&#xff0c;显著提升了规划工作的效率和…