【蓝桥杯省赛真题34】python积木搭建 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

本文介绍了第十三届蓝桥杯青少年组Python比赛省赛的一道真题,涉及积木搭建游戏。题目要求根据小蓝报出的数字N,利用已有积木块高度找出搭建高度大于N的最少积木数量。算法分析包括使用列表排序,通过遍历找到所需积木数。文章还提供了相关考点分析和学习资料推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python积木搭建

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

一、题目要求

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

1、编程实现

小蓝和小青在玩积木搭建游戏,具体玩法如下:
小蓝报一个数字N,代表高楼的高度,小青则需要使用最少的积木搭建出高度大于N的高楼。
给出小蓝所报出的数字N,及已有积木块每一块的高度,请你帮助小青找出最少需要多少块积木可以搭建出高度大于N的高楼。
例如::N=12,已有4个积木块的高度分别为4,7,8,4。
则最少需要2块积木,可以使搭建的高楼高度大于12,2块积木为7和8。

2、输入输出

输入描述:第一行输入一个正整数N,表示小蓝报出的数字
第二行输入多个正整数,表示已有积木块每一块的高度,正整数之间以一个英文逗号隔开。(要求所有正整数之和大于N)

输出描述:输出最少需要使用多少块积木,可以搭建出高度大于N的高楼

输入样例:

12
4,7,8,4

输出样例:

2

二、算法分析

  1. 题目看着有点复杂,但小朋友可以仔细分析一下
  2. 这题其实可以用列表实现起来比较方便
  3. 将每个积木的高度加入列表,然后进行排序
  4. 最后只要将搭建高度依次减去列表中的最大值就可以得到最少需要几块积木

三、程序编写

n = int(input())
ls = list(map(int,input().split(',')))
ls.sort()
for i in range(len(ls)-1,-1,-1):
    n -= ls[i]
    if(n <= 0):
        print(len(ls) - i)
        break

四、程序说明

  1. 利用input输入函数从键盘获取高楼的高度
  2. 利用int函数将n转换成整数类型
  3. 利用split函数以及map函数将输入的多个糖果罐里面对应的积木高度转换成整数对象,并结合list函数将多个对象转换成列表
  4. 利用sort函数对列表进行从低到高进行排序
  5. 接着利用for循环,从列表的最后一个元素开始循环遍历,每次遍历将n减去当前元素的值
  6. 如果n小于等于0,表示已经找到了满足条件的子列表,程序输出当前遍历的次数(即满足条件的子列表的长度),并且跳出循环

五、运行结果

12
4,7,8,4

2

六、考点分析

难度级别:中等,这题相对而言还是有一点小难度,难在产生列表和输出对应图形,具体主要考查如下:

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

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

七、 推荐资料

1、蓝桥杯比赛

2、考级资料

3、其它资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小兔子编程

您的鼓励是我创作优质案例的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值