zoukankan      html  css  js  c++  java
  • 刷题系列

    电梯问题1

    """
    有一部电梯,有m个乘客,每个乘客都从一楼开始上电梯,电梯到达某一层楼后,电梯停止,所有乘客从该层爬楼到自己的目的层(目的层大于等于2)。
    问:电梯停在哪一层楼,能保证这次乘坐电梯的所有乘客爬楼梯的层数之和最少。
    例:list=【0,0,3,4,5,3,2,0,1】#list【i】表示到第i层的乘客数目
    输出:电梯停在第4层,所有乘客爬层总数为21  这题该怎么写呢  
    """
    """ 其实第5层是21 他这个题表述的有问题 他没把列表的下标跟楼层的关系说明白 下标4的话其实是第5层 """ lst = [0,0,3,4,5,3,2,0,1] # 停在第4层 stop_index = 4 sum = 0 # index:层数 # value:要去这个层的人数 for index,value in enumerate(lst,1): print(index,value) # 指定层不用管 if index == stop_index: continue # 总的爬梯数 if index < stop_index: sum += value * (stop_index - index) elif index > stop_index: sum += value * (index - stop_index) print("sum>>>>>>",sum) print(3+5+6+6+5)

    另外一种下标为0的解决方法

    lst = [0,0,3,4,5,3,2,0,1]
    
    total = len(lst)
    print(f"一共有{total}层")
    num = {}
    
    for i in range(total):
        out = 0
        for j in range(total):
            out += abs(j-i) * lst[j]
        num[i] = out
        print(f"假如停在 {i} 层,剩下的人需要爬 {out} 层")
    
    res = sorted(num.items(),key=lambda k:k[1])
    print(f"最佳停的层数为 {res[0][0]},剩下的人需要爬 {res[0][1]} 层")
    """
    一共有9层
    假如停在 0 层,剩下的人需要爬 73 层
    假如停在 1 层,剩下的人需要爬 55 层
    假如停在 2 层,剩下的人需要爬 37 层
    假如停在 3 层,剩下的人需要爬 25 层
    假如停在 4 层,剩下的人需要爬 21 层
    假如停在 5 层,剩下的人需要爬 27 层
    假如停在 6 层,剩下的人需要爬 39 层
    假如停在 7 层,剩下的人需要爬 55 层
    假如停在 8 层,剩下的人需要爬 71 层
    最佳停的层数为 4,剩下的人需要爬 21 层
    """

     

  • 相关阅读:
    Property ‘password’ threw Exception
    eclipse中mybatis自动生成插件使用
    应用笔记:Markdown语法记录
    笔记:Code Warrior 问题汇总
    笔记:Altium Designer-电路设计与制作
    笔记:stm32f030 要点总结(时钟、中断、GPIO、定时器、串口、看门狗)
    笔记:搭建pyQT5开发环境(Python3 +PyCharm 2018 +PyQt5)
    06-笔记:LPC1788-定时器
    09-笔记:LPC1788-内置EE
    08-笔记:LPC1788-滴答定时器(系统节拍定时器)
  • 原文地址:https://www.cnblogs.com/paulwhw/p/12996379.html
Copyright © 2011-2022 走看看