"""
设计:Python程序设计
作者:初学者
日期:2022年 04月 12日
"""
# 例79 最少费用的爬台阶的方法
# 1.问题描述
# 在楼梯上,都有各自的费用,即第i号台阶(台阶从零号索引开始)台阶有非负成本cost[i]。
# 一旦支付了费用,可以爬1~2步。需要找到最低成本来达到最高层。从索引为0楼梯开始,也可以
# 从索引为1楼梯开始。
# 2.问题示例
# 输入cost=[10,15,20],输出15,最便宜的方法是从第一号台阶起步,支付费用并达到顶层。
# 输入cost=[1,100,1,1,1,100,1,1,100,1],输出6,最便宜的方法是从第零号台阶起步,只走
# 费用为1的台阶并且跳过3号台阶。
# 3.代码实现
class Solution:
"""
参数cost:数组
返回最少费用
状态转移方程
"""
def __init__(self, cost):
self.cost = cost
def min_cost_climb_stairs(self):
a, b = 0, 0
for i in range(2, len(self.cost) + 1):
c = min(a + self.cost[i - 2], b + self.cost[i - 1])
a, b = b, c
return b
# 主函数
if __name__ == '__main__':
s = Solution([10, 15, 20])
ssl = Solution([1, 100, 1, 1, 1, 100, 1, 1, 100, 1])
cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
cost1 = [10, 15, 20]
print("输入:", cost1)
print("输入:", cost)
print("输出:", s.min_cost_climb_stairs())
print("输出:", ssl.min_cost_climb_stairs())
最少费用的爬台阶方法
最新推荐文章于 2024-10-08 20:27:53 发布