C哈的刷题计划之杨辉三角形(5)

server/2024/12/31 2:31:24/

1、盲听C哈说

        哈喽,大家好,我是小C,一个每天嘻嘻哈哈的斜杠女青年。一直受一句话的影响 — "你关注的人,决定你看到的世界!" 现在是2024年12月20日早上9点,距离过年只剩一个多月了,总想在今年最后阶段留下些什么,老样子,今天还是给大家分享一道关于二维数组知识点的习题 — 杨辉三角形

        你们知道吗?在数学的世界里,有一个非常神奇的图形,它看起来像是由许多星星组成的三角形,我们叫它杨辉三角形。这个三角形不仅美丽,而且藏着很多有趣的秘密哦!今天,我们就一起来用C++代码探索这个神秘的杨辉三角形,并打印出它的前20行

2、问题描述

(1)题目描述

        打印杨辉三角形的前n(2≤n≤20)行。杨辉三角形如下图,当n=5

输出:

(2)输入描述

        输入行数n。

(3)输出描述

        输出如题述三角形。n行,每行各数之间用一个空格隔开。

(4)样例输入

        5

(5)样例输出

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

3、问题分析

        杨辉三角形是学习二维数组知识点时必刷的题目之一,杨辉三角形(也称为帕斯卡三角形)是一个经典的数学概念,它在编程中常被用来考查学生的多方面能力,例如基础编程能力、逻辑思维能力、数学应用能力等。        

        首先,当我们对一个问题没有任何头绪和解题思路的时候,找规律是重要且有效的手段之一,以问题中的输出样例为例:当n=5,给出一个5行5列的杨辉三角形,一起来观察看看它有哪些特点。

        通过观察,我们发现,杨辉三角形的每一行的开头和结尾都是1,即 ① 杨辉三角形的第1列都是1;② 当行号=列号时,该行该列所对应的数据元素的值也为1。杨辉三角形具有对称性,即从左到右和从右到左读取的数字是相同的。

        进一步观察我们发现:除了每一行开头与结尾数字1,其它的每个数字都是由上一行对应位置的两个数字相加,那么对应的位置的两个数字具体指的是哪里呢?请看图示:

        我们假设存放数据的二维数组名字为a,即a[5][2] = a[4][2] + a[4][1], 因此我们可以得出公式:a[i][j] = a[i-1][j] + a[i-1][j-1];

        对于这道题,首先定义一个二维数组,根据我们上面推导出来的公式先算出杨辉三角形的前20行数据,将其存放在二维数组中,然后根据不同的输入n,输出题目要求的前n行

        其实,学到后面你会发现,编程和数学一样,都是探索世界的工具对于低年龄段的孩子,可以选择用实物演示,用积木或者糖果等实物来构建一个小型的杨辉三角形,让孩子们直观地看到每一层是如何构建的,如果没有条件,一定要在黑板上或纸上画出杨辉三角形的构建过程,让孩子们看到形状和数字的排列;为了增加讲课的趣味性,教师们可以顺带讲解杨辉三角形的历史,比如它在中国和欧洲的起源,让孩子们对这一数学概念产生兴趣,同时为了便于孩子理解,教师可以用故事的形式比喻解释杨辉三角形的形成,比如“星星的家”(每行的星星是如何从上一行的星星“家中”来的),以上这些动作,都是为了让孩子更好地理解杨辉三角形的构成原理,不要一上来就讲很高深的东西,没孩子愿意听的(特别选手除外哈哈),虽然这个过程可能耗费一些时间,但是比起囫囵吞枣,我觉得这样做更有意义,弄懂一道题,远比,弄懂一堆题来得重要得多

4、代码实现

        为了尽可能能够计算出更多杨辉三角形的数据,防止数据数值太大int无法存放,在这里,二维数组我用long long类型来定义(本道题即使你不用long long定义二维数组也没有错)。

#include<bits/stdc++.h> // 引入标准库头文件,包含了C++标准库中大部分常用的组件
using namespace std; // 使用标准命名空间std,这样可以直接使用std命名空间中的函数和对象,而不需要std::前缀// 全局变量定义
long long a[30][30]; // 声明一个30x30的二维数组a,用于存储计算结果
int n; // 存储输入的整数n// 定义主函数,程序的执行从这里开始
int main()
{	// 从标准输入读取一个整数ncin >> n;// 外层循环遍历每一行,从1到nfor(int i=1; i<=n; i++) {// 内层循环遍历每一列,从1到i(因为三角形的每一行长度递增)for(int j=1; j<=i; j++) {// 如果是每行的第一个元素,初始化为1if(j == 1)a[i][j] = 1;// 否则,根据上一行的两个相邻元素计算当前元素的值// 这是杨辉三角(Pascal's Triangle)的递推公式elsea[i][j] = a[i-1][j] + a[i-1][j-1];}}// 外层循环遍历每一行,从1到nfor(int i=1; i<=n; i++) {// 内层循环遍历每一列,从1到ifor(int j=1; j<=i; j++) {// 输出当前元素的值cout << a[i][j] << " ";}// 每行结束后换行cout << endl;}return 0; // 程序执行结束,返回0表示程序正常退出
}

5、OJ测试

        以上是我对杨辉三角形问题的思路探索,包括如何给学生授课,以什么样的形式授课,如何讲解知识点,对于低龄孩子我们又该做一些什么准备等,本来是想讲解知识点的,但是有感而发,讲了一些个人观点与看法,如果您有更好的想法,欢迎分享探讨,谢谢!。        

        大家写完代码之后如果想要做OJ(在线评测)测试,可以找我要相关的链接,电脑自动评测会更加准确~,也可以找我要相关的经典必刷题单(ps:教学经验中总结出来的必刷题单,真的是一步一步试错得到的经验,难怪人家总是说实践出真知),还是那句话,你关注的人,决定你看到的世界,好了,今天这篇文章就讲到这里,我们下期再见~ 


http://www.ppmy.cn/server/152041.html

相关文章

JAVA进制转换-对不同位数的转换方法

JAVA进制转换-对不同位数的转换方法 实例结果代码补叙 实例 第一个输入参数设为被转换的数值&#xff0c;第二个输入参数设为源来的位数&#xff0c;第三个输入参数设为目标的位数。 /*** 位数转换* args[0] 被转换值* args[1] 源位数* args[2] 目标位数*/public static vo…

Python 数据结构对比:列表与数组的选择指南

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Python 文章目录 &#x1f4af;前言&#x1f4af;Python中的列表&#xff08;list&#xff09;和数组&#xff08;array&#xff09;的详细对比1. 数据类型的灵活性2. 性能与效率3. 功能与操作4. 使用场景5. 数据结构选…

企业微信对接家校互动模块配置操作

一、背景说明 校园业务班级群和会议功能对接企业微信&#xff0c;需要企业微信后台配置信息后绑定应用管理端&#xff0c;流程较多&#xff0c;文档进行说明。 二、教育类型企业微信申请 企业微信应用家校互通需要教育类型 三、企业微信后台配置--应用配置 &#xff08;一…

华为OD --- 敏感字段加密

华为OD --- 敏感字段加密 题目独立实现思路源码实现 参考实现 题目 独立实现 思路 通过便利字符串把所有“关键字”找出来,然后将第N个关键字替换成******,最后再通过 “_” 拼接起来即可 源码实现 const rl require("readline").createInterface({ input: proce…

mybatisPlus使用步骤详解

1.导包&#xff1a; <!--mybatis-plus jar文件--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency> yml和之前的相比多了一个-…

网络协议栈学习(二)创建 socket

下面通过学习linux 1.2.13源码进一步理解socket通信机制。对该版本源码的学习主要参考《Linux内核网络栈源代码情景分析》&#xff08;曹桂平 编著&#xff09;。 要理解socket的本质&#xff0c;就要理解当调用socket函数时&#xff0c;该函数到底创建了什么&#xff1f;返回了…

对于使用exe4j打包,出现“NoClassDefFoundError: BOOT-INF/classes”的解决方案

jar使用exe4j打包exe&#xff0c;出现NoClassDefFoundError: BOOT-INF/classes 注意选取的jar包是使用build&#xff0c;而不是maven中的install 本文介绍解决这个方法的方案 点击Project Structure 按照如图所示选择 选择main class&#xff0c;选择你要打的main 如果遇到/M…

OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;分享&#xff5c;16个含源码和数据集的计算机视觉实战项目 本文将分享16个含源码和数据集的计算机视觉实战项目。具体包括&#xff1a; 1. 人…