刷题系列
电梯问题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 层 """
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2018-05-31 并发编程之——多线程基础