面试题分享
题目:
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