电梯问题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 层
"""