0
点赞
收藏
分享

微信扫一扫

【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day06 | 装饰珠 | 真题代码解析


每天刷一道题,话不多说,先刷近两年的题吧,从2020的开始,如果有一起的可以加入我们!!!

一起来刷题,冲击国赛!!!


扫码 我的主页 网页左边 群二维码

加入方式:可以在下方的微信名片加我,然后拉你入群。(记得备注暗号我要拿国奖


2020年第十一届蓝桥杯赛题总览

2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!
在这里插入图片描述

蛇形填数(题目)

(本题总分:25分)

官方练习系统:https://www.lanqiao.cn/problems/507/learning/


—>【问题描述】


—>【输入描述】


—>【输出描述】

输出一行包含一个整数,表示能够得到的最大价值。

—>【输入输出样例】

—>【样例说明】

按照如下方式镶嵌珠子得到最大价值 18,括号内表示镶嵌的装饰珠的种类编号:

4 颗技能 1 装饰珠,4 颗技能 2 装饰珠 W 1 ( 4 ) + W 2 ( 4 ) = 5 + 15 = 20 W_1(4) + W_2(4) = 5 + 15 = 20 W1(4)+W2(4)=5+15=20


解析


通过阅读题干,本题——难度中上:⭐⭐⭐⭐

考察类型:数论

考察知识点:动态规划+枚举


分析:

由于是填空题,我们只需要得出一个结果即可。结果为一个整数。


代码

Python代码实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/2/27 15:04
# @Author  : 府学路18号车神
# @Email   :yurz_control@163.com
# @File    : Day06.py

listlv=[0]*5
listw=[[0 for i in range(8)]for i in range(5)]
listl=[0]*5
listp=[0]*5

#先用列表listlv存储各个等级的装饰孔的数量(例如,listlv[1]=3表示等级为1的装饰孔共3个)
for i in range(6):
    listinput=list(map(int,input().split()))
    for i in range(1,len(listinput)):
        listlv[listinput[i]]+=1

summ=0

m=int(input())
for i in range(m):
    listt=list(map(int,input().split()))
    listl[listt[0]]=listt[0]
    listp[listt[0]]=listt[1]
    listw[listt[0]]=[0]+listt[2:]

#按等级从大到小,对于每种等级的装饰珠进行枚举
for i in range(min(listlv[4],listp[4])+1):
    for j in range(min(listlv[4]+listlv[3]-i,listp[3])+1):
        for k in range(min(listlv[4]+listlv[3]+listlv[2]-j-i,listp[2])+1):
            for l in range(min(listlv[4]+listlv[3]+listlv[2]+listlv[1]-j-i-k,listp[1])+1):
                summ=max(summ,listw[4][i]+listw[3][j]+listw[2][k]+listw[1][l])

print(summ)		# 175

今天的题在系统里面验证的,如果再PyCharm没法验证!~

在这里插入图片描述

由此,我们可以快速的出结果为:175


今天开刷第 天,难度中上,欢迎大家加入,一起变强,一起自律,一起上国赛!!!

今天的题目有点难度哈,有不同解法的可以在下面留言哦!~

往期刷题路线:

刷题路线Detail
Day-01门牌制作
Day-02寻找2020
Day-03跑步锻炼
Day-04蛇形填数
Day-05排序

官方刷题练习系统:http://lx.lanqiao.cn/


ღ( ´・ᴗ・` )

举报

相关推荐

0 条评论