面试题分享
题目:
1.小明带了一个宠物去旅游,需要坐车经过n个站点,每个站点宠物都要吃掉一条鱼,每个站位都可以买鱼,也可以不买,车上有冰箱,可以存储鱼(可以满足全部站点的需要),使用冰箱的话,会产生存储费用,根据上述描述,计算小明到达目的地的最小花费:
测试用例1:
3:站位数
1 10 => 第一个参数为此站点买1条鱼的费用;第二个参数为从当前站点到下一站点每条鱼所花费的路费
2 20
3 0
最小费用为:6
测试用例2:
100 10 => 第一个参数为此站点买1条鱼的费用;第二个参数为从当前站点到下一站点每条鱼所花费的路费
200 20
300 0
最小费用为:340
思路:收集站位n上的那条鱼的全部来源[可能买自于第一站位,也可能买自于第二站位,。。。,也可能买自于第n站位],
分别计算这些来源的费用(以用例2中的第3站位,鱼买自第1站位的情形 总费用=100+10+20),取最小值
从站位1加到最后一个站位就好
代码如下:
def get_min(n, sta_list):
if n == 0:
return sta_list[0][0]
else:
tmp = []
print(n)
for i in range(n):
tot_tmp = sta_list[i][0]
for j in range(i,n-1):
tot_tmp+=sta_list[j][1]
tmp.append(tot_tmp)
print(i,tmp)
return min(tmp)
def get_tot_min(sta_list):
n_len =len(sta_list)
total = 0
while(n_len):
min_n = get_min(n_len, sta_list)
print(min_n)
total += min_n
n_len-=1
return total

浙公网安备 33010602011771号