牛客网刷题规范Python

直接以一个题目为例子

题目描述

玥玥带乔乔一起逃亡,现在有许多的东西要放到乔乔的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品。现在给出该种物品的数量、体积、价值的数值,希望你能够算出怎样能使背包的价值最大的组合方式,并且输出这个数值,乔乔会非常感谢你。

输入描述:

第1行有2个整数,物品种数n和背包装载体积v;

第2行到i+1行每行3个整数,为第i种物品的数量m、体积w、价值s。

输出描述:

仅包含一个整数,即为能拿到的最大的物品价值总和。

示例1

输入

2 10
3 4 3
2 2 5

输出

13

说明

选第一种一个,第二种两个,结果为3x1+5x2=13。

备注:

1≤v≤500

1≤n≤2000

1≤m≤10

1≤w≤20

1≤s≤100

解答

下面给出python方式最高分的答案

n,v=map(int,input().split())  			#输入一行,确定n和v,split默认使用空格分割
l=[]
sum_p = 0
sum_v=v

for i in range(n):                    #输入每一行n的信息
    l0=list(map(int,input().split()))  
    l.append(l0)
l.sort(key=lambda k:k[2]/k[1],reverse=True)   #对每个物品按照单位体积的价值排序
for i in l:
    for j in range(i[0]):
        if sum_v-i[1]>=0:
            sum_p+=i[2]
            sum_v-=i[1]
        else:
            break
print(sum_p)

总结

输入使用input函数,使用map的方式进行分割
需要学习
map的使用
input().split0函数
list.sort()函数
lambda表达式

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值