【蓝桥杯省赛真题47】python杨辉三角形计算 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

本文主要是介绍【蓝桥杯省赛真题47】python杨辉三角形计算 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

python杨辉三角形计算

一、题目要求

1、题目描述

2、编程实现

3、输入输出

二、算法分析

三、程序编写

四、程序说明

五、运行结果

六、考点分析

七、 推荐资料

1、蓝桥杯比赛

2、考级资料

3、其它资料


python杨辉三角形计算

第十四届蓝桥杯青少年组python比赛省赛真题

一、题目要求

(注:input()输入函数的括号中不允许添加任何信息)

1、题目描述

杨辉三角就是一个用数排列起来的三角形(如下图),杨辉三角规则如下

  • 每行第一个数和最后一个数都为1,其它每个数等于它左上方和右上方的两数之和
  • 第n行有n个数

注意:“列”指的是如图所标注的斜列

2、编程实现

        小青对杨辉三角的特点和规律研究得很明白,,现要考察你对杨辉三角的熟悉程度,首先告知你这是一个N行的杨辉三角,然后又告知了两个数值X和Y(X表示第几行,Y表示第几列),让你根据杨辉三角的特点和观察到的规律解决以下两个问题。

  1. 第X行第Y列对应的数是多少
  2. 求出N行的杨辉三角中第Y列中所有数的和

例如:N=5,5行的杨辉三角如下图:

X=5,Y=3,第5行第3列对应的数为6;第3列中所有数的和为10(10=6+3+1)。

3、输入输出

输入描述:第一行输入一个正整数N(2≤N≤30),表示杨辉三角的行数
第二行输入两个正整数X和Y(1≤Y≤X≤N),分别表示第X行和第Y列,正整数之间以一个英文逗号隔开

输出描述:输出两个整数,分别表示N行的杨辉三角中第X行Y列对应的数,及第Y列上所有数的和,两个整数之间以一个英文逗号隔开

输入样例:

5
5,3

输出样例:

6,10

二、算法分析

  1. 题目相对而言有一定的难度,难在杨辉三角形的构建
  2. 根据杨辉三角的特点,每一行的第一个和最后一个数都是1,可以直接返回1。
  3. 根据规律可知,在第X行,第Y列的数是由第X-1行的第Y-1列和第Y列的数相加得到的,即 lst[X][Y] = lst[X-1][Y-1] + lst[X-1][Y]。
  4. 创建一个二维数组lst,大小为[N][N],初始化所有元素为0。
  5. 使用两层循环,外层循环控制行数i,内层循环控制列数j。
    • 将每行的第一个元素赋值为1
    • 其它的根据规律计算当前位置的数值并赋值给lst[i][j]。
  6. 第X行第Y列对应的数为lst[X-1][Y-1]。
  7. 计算第Y列中所有数的和,使用一个变量resy初始化为0,然后用一个循环将位于第Y列的每个元素累加到resy中。
  8. 返回第Y列中所有数的和resy

三、程序编写

n = int(input())
res = resy = 0
x,y = map(int,input().split(','))
lst = [[0 for i in range(n+1)] for j in range(n+1)]
lst[1][1] = 1
for i in range(2,n+1):lst[i][1] = 1for j in range(2,i+1):lst[i][j] = lst[i-1][j-1] + lst[i-1][j];res = lst[x][y];for i in range(n+1):resy += lst[i][y]
print("{},{}".format(res,resy))

四、程序说明

  1. 首先,程序读取一个整数n,这个整数将用于创建一个(n+1) x (n+1)的二维数组lst
  2. 然后,程序读取两个整数x和y,这个坐标表示lst的索引
  3. 接下来,程序初始化两个变量res和resy为0
  4. 然后,程序将lst的第一个元素设置为1
  5. 然后,程序使用嵌套循环计算lst中的其他元素。具体来说,对于每一行i和每一列j,lst[i][j]等于lst[i-1][j-1]加上lst[i-1][j]
  6. 接下来,程序将res设置为lst[x][y],即给定坐标的元素值
  7. 然后,程序循环遍历lst的每一行,将该行的第y列元素累加到resy中
  8. 最后,程序输出格式化字符串"{},{}".format(res,resy);这个字符串包含了res和resy的值,用逗号分隔。

五、运行结果

5
5,36,10​

六、考点分析

难度级别:中等,这题相对而言还是有一点小难度,难在构建杨辉三角形,具体主要考查如下:

  1. 学会分析题目,找到解题思路
  2. 学会简单的算法知识的应用
  3. input函数:Python 中 input() 函数接受一个标准输入数据,返回为 string 类型。
  4. int函数:强制将传入对象转换成整数类型
  5. split函数:按照指定的分隔符进行分割
  6. map函数:将指定的对象按照指定的函数进行迭代,在这里是将时分秒字符串类型数据按int整数类型数字返回输出(相当于多个变量强制类型转化)
  7. list函数:强制将参数转化成列表对象
  8. 学会列表的相关操作:列表声明、取数、遍历等等
  9. 学会while循环的使用:一般在不知道循环条件下推荐使用,条件不成立执行循环体,成立退出循环体
  10. 学会for循环的使用:for循环可以遍历任何有序的项及列表元素等等。
  11. range函数:rang(a,b),循环的时候是不包括b的,所以我们这个案例中要转变一下,要想包含b,就应该写成range(a,b+1)
  12. 学会if...条件判断语句的使用:满足条件才执行相应的程序
  13. 学会if...else双分支语句的使用:满足条件执行一种处理程序,不满足执行另一种处理程序
  14. print函数:用于打印输出,最常见的一个函数。
  15. 充分掌握for循环和列表相关操作函数的使用

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

七、 推荐资料

  • 所有考级比赛学习相关资料合集【推荐收藏】

1、蓝桥杯比赛

  • 蓝桥杯python选拔赛真题详解

  • 蓝桥杯python省赛真题详解

  • 蓝桥杯python国赛真题详解

  • 历届蓝桥杯科技素养计算思维真题解析

2、考级资料

  • python等级一级真题解析【电子学会】

  • python等级二级真题解析【电子学会】

  • python等级三级真题解析【电子学会】

  • python等级四级真题解析【电子学会】

3、其它资料

  • 初学python100例

  • 历届蓝桥杯scratch国赛真题解析
  • 历届蓝桥杯scratch省赛真题解析
  • 历届蓝桥杯scratch STEMA选拔赛真题解析
  • 历届蓝桥杯科技素养计算思维真题解析
  • 画图-scratch编程考级99图
  • 电子学会历年scratch等级考试一级真题解析
  • 电子学会历年scratch等级考试二级真题解析
  • 电子学会历年scratch等级考试三级真题解析
  • 电子学会历年scratch等级考试四级真题解析
  • 零基础学习scratch3.0【入门教学 免费】
  • 零基础学习scratch3.0【视频教程 114节 免费】

这篇关于【蓝桥杯省赛真题47】python杨辉三角形计算 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111655

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal