码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【蓝桥杯省赛真题22】python剩余空间问题 青少年组蓝桥杯比赛python编程省赛真题解析


    目录

    python剩余空间问题

    一、题目要求

    1、编程实现

    二、解题思路

    1、案例分析

    三、程序代码

    四、程序说明

    五、运行结果

    六、考点分析

    七、推荐资料

    1、蓝桥杯比赛

    2、考级资料

    3、其它资料


     

    python剩余空间问题

    2020年第青少年组python蓝桥杯省赛真题

    一、题目要求

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

    1、编程实现

    现有一个容器,其容量为v (0v<1001,正整数),同时有n个物品 (0

    2、输入输出

    输入描述:

    输入容器大小V (0

    输出描述:

    剩余最小空间值

    输入样例:

    1. 100
    2. 4
    3. 50
    4. 20
    5. 45
    6. 19

    说明:“100”输入的是容器大小V:“4"输入的是物品数量n:“50" “20" “45“ “19"输入的是4个物品体积 

    输出样例:

    5

    说明:“5”是容器大小减掉4个物体不同组合后与容器大小最为接近的一组值。(物品组合个数不限制,只找最接近容器大小的值)

    二、解题思路

    1、案例分析

    1. 题目相对而言相对有点难度,需要对题目的认真思考,找到解题思路
    2. 解这道题目比较方便的一个办法是利用递归思路进行求解
    3. 递归调用自己,将列表中除了第一个物品以外的其他物品,如果都取完了还没有超过空间拿就直接就是,如果空间不够了,就返回0没办法再放进去了
    4. 在将剩余空间和第一个物品体积进行比较,如果大了说明可以放的下,就继续递归调用自己,最后比较两次得到的最小空间输出即可

    三、程序代码

    1. def fill(lst,space):
    2. if not lst:
    3. return space
    4. if not space:
    5. return 0
    6. rest = fill(lst[1:],space)
    7. if space>=lst[0]:
    8. first=fill(lst[1:],space-lst[0])
    9. result=min(first,rest)
    10. return result
    11. v=int(input())
    12. n=int(input())
    13. list1 = []
    14. for i in range(n):
    15. list1.append(int(input()))
    16. print(fill(list1,v))

    四、程序说明

    上面程序用于计算在给定空间下可以拿多少个物品。给定一个物品列表(lst)和可用空间(space),程序会递归地计算在可用空间下可以拿多少个物品。下面是每一行代码的详细解释:

    • def fill(lst,space)::定义一个名为 fill 的函数,接收两个参数,即物品列表(lst)和可用空间(space)。
    • if not lst::如果物品列表为空,说明物品已经取完,直接返回可用空间。
    • if not space::如果可用空间为0,说明没有空间,无法放置任何物品,返回0。
    • rest = fill(lst[1:],space):递归调用 fill 函数,处理物品列表中除了第一个物品以外的其他物品,并将结果赋值给变量 rest。同时将可用空间的值赋给变量 space,以便在递归调用中处理空间的变化。
    • if space>=lst[0]::如果可用空间大于等于第一个物品的尺寸,说明有足够的空间放置第一个物品,继续下面的操作。
    • first=fill(lst[1:],space-lst[0]):递归调用 fill 函数,处理物品列表中除了第一个物品以外的其他物品,并将结果赋值给变量 first。同时将可用空间减去第一个物品的尺寸,以便计算第一个物品的放置空间。
    • result=min(first,rest):将 first 和 rest 中的较小值赋值给变量 result,表示在当前空间下最多可以放置的物品数量。
    • return result:返回最终结果。
    • v=int(input()):从标准输入中获取可用空间(room)。
    • n=int(input()):从标准输入中获取物品数量(n)。
    • list1 = []:创建一个空列表,用于存储物品列表。
    • for i in range(n)::循环遍历 n 次,每次从标准输入中获取一个物品的尺寸,并将其添加到列表中。
    • print(fill(list1,v)):调用函数 fill,计算在给定空间下可以拿多少个物品,并输出结果。

    五、运行结果

    1. 100
    2. 4
    3. 50
    4. 20
    5. 45
    6. 19
    7. 5

    六、考点分析

    难度级别:难,这题相对而言还是有一点小难度,难在题目分分解,具体主要考查如下:

    1. input函数:Python 中 input() 函数接受一个标准输入数据,返回为 string 类型。
    2. 如何定义函数:定义了一个名为 fill 的函数,接收两个参数,即物品列表(lst)和可用空间(space)。
    3. 如何实现条件判断:在函数中使用了多个条件判断语句,例如 if not lst: 和 if not space:,用于判断列表是否为空或可用空间是否为0。
    4. 掌握递归调用:在函数中进行了多次递归调用,例如第4行和第5行。递归调用指的是在一个函数中调用自身的行为。
    5. 熟悉列表切片:在第4行中使用了列表切片(lst[1:]),用于获取物品列表中除了第一个物品以外的其他物品。
    6. 最小值函数:在第7行中使用了最小值函数(min(first,rest)),用于获取当前空间下最多可以放置的物品数量。
    7. 充分掌握函数定义、递归调用和列表相关操作函数的使用

    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节 免费】
  • 相关阅读:
    [美国访问学者]J1签证和商务B1签证的区别
    SpringBoot+RabbitMQ实现MQTT协议通讯
    阿里大牛解析淘宝与Twitter 分布式系统案例与其架构设计原来源码
    OA系统源码
    C++学习之路-C++11的新特性
    信息量特点:就是排除可能越多,信息量就越大
    python毕业设计项目源码选题(7)校园排课选课系统毕业设计毕设作品开题报告开题答辩PPT
    Mybatis 常见面试题
    机器学习小知识--面试得一塌糊涂
    CSP-J 2022 入门组/普及组
  • 原文地址:https://blog.csdn.net/frank2102/article/details/130884372
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号