面试题分享

题目:

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

  

posted @ 2020-12-29 23:51  YoungS01  阅读(82)  评论(0编辑  收藏  举报