持续更新中……
秋招笔试常考题目:分数背包,元素组合,版本比较,列表内所有元数个数,找零问题
目录
分数背包
from re import M
def fractional_backpack(goods, w_bag):
"""分数背包:根据每种货物的单价判断先装哪个
返回的是每种商品能放的数量,整数或分数
Args:
goods (_type_): _description_
weight (_type_): _description_
"""
m = [0 for _ in range(len(goods))]
for i, (price, weight) in enumerate(goods):
if w_bag >= weight:
m[i] = weight
w_bag -= weight
else:
m[i] = w_bag / weight
w_bag = 0
break
return m
if __name__ == "__main__":
goods = [(60, 10), (100, 20), (120,30)]
goods.sort(key=lambda x: x[0]/x[1], reverse = True)
print(fractional_backpack(goods, 50))
实现组合
from abc import ABC
import itertools
hashm = {"A" : ["A1","A2","A3"], "B" : ["B1","B2","B3"], "C" : ["C1","C2","C3"]}
a = input()
m = []
for i in a:
m.append(hashm[i])
print(m)
res = ["".join(j) for j in itertools.product(*m)]
print("res = ", res)
for x in res:
print(x, end = " ")
版本比较
def version_compare(v1, v2):
"""版本比较大小"""
vvv1 = v1.split(".")
vvv2 = v2.split(".")
print("vvv1: ",vvv1)
print("vvv2: ",vvv2)
c = 0
while True:
if len(vvv1) == c and len(vvv2) == c:
return 0
if len(vvv1) == c:
vvv1.append(0)
print(vvv1)
if len(vvv2) == c:
vvv2.append(0)
print(vvv2)
if int(vvv1[c]) > int(vvv2[c]):
return 1
elif int(vvv1[c]) < int(vvv2[c]):
return -1
c += 1
if __name__ == "__main__":
v1, v2 = input().split(",")
print(version_compare(v1, v2))
对列表内所有元素实现计数
import random
from collections import Counter
def count_number(nums):
"""计算列表中每个元素的个数"""
# cou_num = nums.count(4)
# print(cou_num)
# 方法1: 两个列表对应实现
# nums_set = list(set(nums))
# print("列表的不重复元素为:",nums_set)
# len_nums_set = len(nums_set)
# cou = [0 for _ in range(len_nums_set)]
# for i in range(len_nums_set):
# cou[i] = nums.count(nums_set[i])
# 方法2: 引用库,直接一行代码实现
cou = Counter(nums)
print(cou[5])
return cou
if __name__ == "__main__":
nums = [random.randint(1,5) for _ in range(10)]
print(nums)
print(count_number(nums))
找零问题
def charge(spend, pay):
"""
规定面额的找零,每种金额应找张数
Args:
spend (_type_): 购买商品的花销
pay (_type_): 支付的金额(待找零)
"""
miane = [100, 50, 20, 5, 1]
charge = [0 for _ in range(len(miane))]
print(charge)
all = pay - spend
# i = 0
# while i < len(miane):
# charge[i] = all // miane[i]
# all = all % miane[i]
# i += 1
for i, money in enumerate(miane):
charge[i] = all // money
all = all % money
return charge
if __name__ == "__main__":
print(charge(153, 200))