2021年第十二届蓝桥杯python组省赛

这篇博客介绍了2021年第十二届蓝桥杯Python组省赛的部分题目,包括填空题和编程大题的详细解析。涉及的算法包括贪心算法、动态规划等,题目涵盖卡片拼数、直线计算、货物摆放方案、回路计数、最短路径等,提供了解题思路和代码示例。

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

前言:

最近忙着备战期末考,刷算法的时间是越来越少了...


目录

填空题

卡片

直线

货物摆放

回路计数

路径

编程大题

时间显示

杨辉三角

左孩子右兄弟

异或数列

括号序列


填空题


卡片

题目:

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。 小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个, 就保存起来,卡片就不能用来拼其它数了。 小蓝想知道自己能从 1 拼到多少。 例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10, 但是拼 11 时卡片 11 已经只有一张了,不够拼出 11。 现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少? 提示:建议使用计算机编程解决问题

思路:

for循环走一遍,直到其中一个数字不够用

代码:

def main():
    nums=[2021 for _ in range(10)]
    n=1
    while 1:
        for i in str(n):
            nums[int(i)] -= 1
            if nums[int(i)]<0:
                return n-1
        n += 1
    
print(main())

答案:3181


直线

题目:

在平面直角坐标系中,两点可以确定一条直线。

给定平面上 20 × 21 个整点 {(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z},即横 坐标是 0 到 19 (包含 0 和 19) 之间的整数、纵坐标是 0 到 20 (包含 0 和 20) 之 间的整数的点。

请问这些点一共确定了多少条不同的直线。

思路:

斜率k=0和无穷的线个数有m+n个,然后创建一个set集合,加进每个点对应k和b的值,最后len一下

代码:

def main(m,n):
    res=set()
    point=[[x,y] for  x in range(m) for  y in range(n)]
    for i in range(len(point)-1):
        for j in range(i+1,len(point)):
            x1,y1=point[i][0],point[i][1]
            x2,y2=point[j][0],point[j][1]
            if x1==x2 or y1==y2:
                continue
            else:
                k=(y2-y1)/(x2-x1)
                b=(x2*y1-x1*y2)/(x2-x1)    
                #print((x1,y1),(x2,y2),(k,b))
                res.add((k,b))
    return len(res)+m+n
print(main(20,21))

答案:40257


货物摆放

题目:

小蓝有一个超大的仓库,可以摆放很多货物。

现在,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值