首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

蓝桥杯省赛真题——最少刷题数

  • 24-01-06 05:59
  • 4452
  • 6027
blog.csdn.net

2022年第13届省赛,蓝桥杯真题。


  (本笔记适合初通 Python 的 coder 翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


蓝桥杯真题
最少刷题数
(2022年第13届省赛)


【算法不限语言,自由不分国界】


本文质量分:

【 96 】
本文地址: http://iyenn.com/rec/1968539.html

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 最少刷题数
    • 1、题目描述
    • 2、题目分析
    • 3、代码实现
      • 3.1 递归
      • 3.2 循环
    • 4、完整源码


◆ 最少刷题数


1、题目描述


  • 题目截屏图片
    在这里插入图片描述
    【题目来源于 CSDN 问答社区提问“最少刷题数”】



回页目录


2、题目分析


  对于每一个学生,要计算还需刷题数,就要先判定比他刷题数多和少的两撮人的人数差值,差值不大于零,无需再刷题,即最大刷题量为0;反之则需计算最大刷题量。


  • 1、最初我想要一次性计算,始终不得其法。?分析发现,我可以一个一个的来超越:只需超过比他多的那撮人中最少的那个学生刷题量(只需比那名学生多刷一题就好,即“那名学生的刷题量 - 当前学生刷题 + 1”,结果就是超越所需刷题量),就可以使“格局”发生变化。每次判定两撮人人数差值来决定是不是还要继续超越。每次超越刷题量的总和就是该学生的最大刷题数。

  • 2、我发现,每次操作超越判定都是一样的操作,完全可以复用代码(代码复用可以用循环或者递归调用函数实现)。



回页目录



3、代码实现

  (我仅会点python ,只能用python 代码阐述“算法逻辑”。我用递归计算,初达预期,代码冗余,进行了一定程度的优化。接着,又用循环复刻了题目“算法”。)


  • 代码运行效果截屏图片
    在这里插入图片描述

3.1 递归


def is_add(num):
    ''' 判定还需刷题量 '''
    up = [i for i in stu if i > num] # 解析比当前学生多的刷题量。
    up.sort() # 刷题量多的列表排升序。
    low = [i for i in stu if i < num] # 解析比当前学生少的刷题量。
    result = [] # 当前学生还需刷题量列表初值。
    
    def count(num):
        ''' 递归计算 '''
    
        if (len(up) - len(low)) > 0: # 比当前学生刷题量多、少人数差大于0,递归计算还需刷题量。
            tem = up.pop(0) # 抽取比当前学生刷题量多且最接近的刷题量。
            result2 = tem + 1 - num # 两人刷题量差值+1即是还需刷题量,就会会超过该名学生。
            result.append(result2) # 将还需刷题量计入列表。
            low.append(tem + result2) # 比当前学生刷题量少的人数 +1。
            return count(num + result2) # 递归函数调用,继续计算。

    count(num) # 调用函数计算还需刷题量。
    return sum(result) if result else 0 # 如果有递归计算,则返回计算值;否则返回0。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

3.2 循环


def is_add(num):
    ''' 循环计算 '''
    n = 0
    more = [i for i in stu if i > num]
    less = [i for i in stu if i < num]
        
    while 1: # 循环计算。
        
        if len(more) - len(less) <= 0:
            break # 达成题目要求停止计算。
            
        temp = min(more) # 取高刷题数数组最小值。
        n += temp - num + 1 # 累加刷题数。
        num = temp + 1 # 动态赋值当前学生刷题数。
        # 更替两撮人数据。
        more.remove(temp)
        less.append(temp)
            
    return n

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21


回页目录

4、完整源码

(源码较长,点此跳过源码)

#!/sur/bin/nve python
# coding: utf-8
import time

def is_add(num):
    ''' 判定还需刷题量 '''
    up = [i for i in stu if i > num] # 解析比当前学生多的刷题量。
    up.sort() # 刷题量多的列表排升序。
    low = [i for i in stu if i < num] # 解析比当前学生少的刷题量。
    result = [] # 当前学生还需刷题量列表初值。
    
    def count(num):
        ''' 递归计算 '''
    
        if (len(up) - len(low)) > 0: # 比当前学生刷题量多、少人数差大于0,递归计算还需刷题量。
            tem = up.pop(0) # 抽取比当前学生刷题量多且最接近的刷题量。
            result2 = tem + 1 - num # 两人刷题量差值+1即是还需刷题量,就会会超过该名学生。
            result.append(result2) # 将还需刷题量计入列表。
            low.append(tem + result2) # 比当前学生刷题量少的人数 +1。
            return count(num + result2) # 递归函数调用,继续计算。

    count(num) # 调用函数计算还需刷题量。
    return sum(result) if result else 0 # 如果有递归计算,则返回计算值;否则返回0。


def is_add(num):
    ''' 循环计算 '''
    n = 0
    more = [i for i in stu if i > num]
    less = [i for i in stu if i < num]
        
    while 1: # 循环计算。
        
        if len(more) - len(less) <= 0:
            break # 达成题目要求停止计算。
            
        temp = min(more) # 取高刷题数数组最小值。
        n += temp - num + 1 # 累加刷题数。
        num = temp + 1 # 动态赋值当前学生刷题数。
        # 更替两撮人数据。
        more.remove(temp)
        less.append(temp)
            
    return n


if __name__ == '__main__':
    start = time.time()
    in_s = '''5
12 10 15 20 6'''
    n = int(in_s.split('\n')[0])
    stu = list(map(int, in_s.split('\n')[1].split()))
    print(f"\n输入:\n{in_s}\n\n预期输出:0 3 0 0 7\n\n实际输出:{' '.join(map(str, [is_add(i) for i in stu]))}") # 用列表解析式解析每个学生还需刷题量,用jion()方法拼接输出。

    '''for i in stu:
        print(i, is_add(i))''' # 循环遍历轮询写法。

    print(f"程序用时:{time.time()-start} 秒")


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60



回页首


上一篇:  字符串列表分类计算平均值(给定一字符串列表数据,按颜色分类计算价格平均值并写入列表)
下一篇: 

我的HOT博:

  本次共计收集 219 篇博文笔记信息,总阅读量 37.12w,平均阅读量 1694。已生成 25 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 2023-07-18 05:54:34 完成,用时 5 分 1.76 秒。


  1. 让QQ群昵称色变的神奇代码
    ( 56965 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:24   踩 :0  收藏:81  打赏:0  评论:17
    本篇博文笔记于 2022-01-18 19:15:08 首发,最晚于 2022-01-20 07:56:47 修改。
  2. ChatGPT国内镜像站初体验:聊天、Python代码生成等
    ( 54947 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/129035387
    点赞:125   踩 :0  收藏:789  打赏:0  评论:75
    本篇博文笔记于 2023-02-14 23:46:33 首发,最晚于 2023-07-03 05:50:55 修改。
  3. pandas 数据类型之 DataFrame
    ( 8875 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:6   踩 :0  收藏:31  打赏:0  评论:0
    本篇博文笔记于 2022-05-01 13:20:17 首发,最晚于 2022-05-08 08:46:13 修改。
  4. 个人信息提取(字符串)
    ( 6995 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:1   踩 :0  收藏:12  打赏:0  评论:0
    本篇博文笔记于 2022-04-18 11:07:12 首发,最晚于 2022-04-20 13:17:54 修改。
  5. 罗马数字转换器|罗马数字生成器
    ( 6741 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2022-01-19 23:26:42 首发,最晚于 2022-01-21 18:37:46 修改。
  6. Python字符串居中显示
    ( 6644 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    点赞:1   踩 :0  收藏:6  打赏:0  评论:1
    本篇博文笔记于 2021-12-26 23:35:29 发布。
  7. Python列表(list)反序(降序)的7种实现方式
    ( 5755 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:5   踩 :0  收藏:18  打赏:0  评论:8
    本篇博文笔记于 2022-12-11 23:54:15 首发,最晚于 2023-03-20 18:13:55 修改。
  8. 斐波那契数列的递归实现和for实现
    ( 5429 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122355295
    点赞:4   踩 :0  收藏:2  打赏:0  评论:8
    本篇博文笔记于 2022-01-06 23:27:40 发布。
  9. 练习:字符串统计(坑:f‘string‘报错)
    ( 4998 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2021-12-04 22:54:29 发布。
  10. python清屏
    ( 4773 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    点赞:0   踩 :0  收藏:6  打赏:0  评论:0
    本篇博文笔记于 2021-10-14 13:47:21 发布。
  11. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
    ( 4763 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121645399
    点赞:14   踩 :0  收藏:42  打赏:0  评论:0
    本篇博文笔记于 2021-11-30 23:43:17 发布。
  12. 回车符、换行符和回车换行符
    ( 4713 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:1   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-02-24 13:10:02 首发,最晚于 2022-02-25 20:07:40 修改。
  13. 练习:生成100个随机正整数
    ( 4109 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122558220
    点赞:1   踩 :0  收藏:6  打赏:0  评论:0
    本篇博文笔记于 2022-01-18 13:31:36 首发,最晚于 2022-01-20 07:58:12 修改。
  14. 密码强度检测器
    ( 4101 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121739694
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2021-12-06 09:08:25 首发,最晚于 2022-11-27 09:39:39 修改。
  15. 罗马数字转换器(用罗马数字构造元素的值取模实现)
    ( 3985 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122608526
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2022-01-20 19:38:12 首发,最晚于 2022-01-21 18:32:02 修改。
  16. 我的 Python.color() (Python 色彩打印控制)
    ( 3789 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    点赞:2   踩 :0  收藏:7  打赏:0  评论:0
    本篇博文笔记于 2022-02-28 22:46:21 首发,最晚于 2022-03-03 10:30:03 修改。
  17. 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)
    ( 3770 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124424935
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2022-04-26 12:46:25 首发,最晚于 2022-04-27 21:22:07 修改。
  18. 练习:仿真模拟福彩双色球——中500w巨奖到底有多难?跑跑代码就晓得了。
    ( 3475 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/125415626
    点赞:3   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-06-22 19:54:20 首发,最晚于 2022-06-23 22:41:33 修改。
  19. random.sample()将在python 3.9x后续版本中被弃用
    ( 3338 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120657230
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-10-08 18:35:09 发布。
  20. 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )
    ( 3309 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124539589
    点赞:4   踩 :0  收藏:2  打赏:0  评论:3
    本篇博文笔记于 2022-05-02 13:02:39 首发,最晚于 2022-05-21 06:10:42 修改。
  21. Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义
    ( 3282 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123087606
    点赞:0   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-02-23 13:08:07 首发,最晚于 2022-04-04 23:52:38 修改。
  22. 练习:求列表(整数列表)平衡点
    ( 3148 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121737612
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-12-05 23:28:10 发布。
  23. 练习:银行复利计算(用 for 循环解一道初中小题)
    ( 3043 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123854548
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2022-03-30 20:06:37 首发,最晚于 2022-04-06 18:15:16 修改。
  24. 练习:小炼二维数组
    ( 3030 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/125175592
    点赞:9   踩 :0  收藏:5  打赏:0  评论:9
    本篇博文笔记于 2022-06-07 23:54:43 首发,最晚于 2022-06-08 00:31:49 修改。
  25. 练习:柱状图中最大矩形
    ( 3029 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122032365
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-12-19 23:47:07 发布。
推荐条件 阅读量突破三千
(更多热博,请点击蓝色文字跳转翻阅)

回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费?下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回页首

◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

注:本文转载自blog.csdn.net的梦幻精灵_cq的文章"https://blog.csdn.net/m0_57158496/article/details/131795092"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top