当前位置:   article > 正文

蓝桥杯STEAM测试python2022一月测试题第五题_蓝桥杯stema python

蓝桥杯stema python

编程实现:
小蓝桌子上摆放着一个容积为m的书包及n件不同的商品,且每件商品上都标有商品的体积和商品的价值。

小蓝要满足以下要求挑选商品装入书包中
要求1:挑选的商品总体积不超过书包的容积:
要求2:挑选的商品商品总价值最大。
请你帮助小蓝计算出能装入书包的商品的最大价值。

输入描述:
第一行输入两个正整数m和n,m表示书包的容积,n表示商品的数量。两个正整数之间一个英文逗号隔开
第二行输入n个正整数表示商品的体积,正整数之间一个英文逗号隔开
第三行输入n个正整数表示商品的价值,正整数之间一个英文逗号隔开(商品价值的输入顺序对应商品体积输入顺序)

输出描述:输出装入书包的商品的最大价值

样例输入: 11,3
2,6,4
1,5,2
样例输出: 7

解题思路:
1、明确输出目标是装入书包的商品的最大价值
2、
①明确目标后,那么价值肯定只从大到小依次加起来,但要注意使用sort()指令排序话,无法使得两个列表排序之后还是对应关系的~
②所以要借助index()索引值指令以及第三个列表帮助
3、考虑是否全部加起来没有超过体积大小的情况~

m,n=map(int,input().split(","))
a=list(map(int,input().split(",")))##体积列表
b=list(map(int,input().split(",")))##价值列表
c=b[:]##建立价值2列表,不影响原来的对应关系
if sum(a)<m:##是否全部加起来没有超过体积大小
    print(sum(b))
else:
    for i in range(n):
        key = a[i]
        t = a[i]  ##体积
        s = b[i]  ##价值
        for j in range(n):
            if (i != j and key + a[j] < m):
                c.append(b[i] + b[j])
                t += a[j]
                s += b[j]
                if t > m:
                    t -= a[j]
                    s -= b[j]
                c.append(s)
    print(max(c))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/63963
推荐阅读
相关标签
  

闽ICP备14008679号