ステアクライミング:効率的な方法


ステアクライミング問題の基本的なアプローチは、与えられた階段の数と各階段のコストが与えられた場合、最小のコストで階段を登る方法を見つけることです。以下に、効率的なステアクライミングアルゴリズムの手順を示します。

  1. メモリを初期化し、最初の階段までのコストを0とします。
  2. 現在の階段から次の階段に進むための最小コストを計算します。これは、現在の階段のコストと次の階段のコストを比較して決定します。
  3. 最小コストをメモリに保存し、次の階段に進みます。
  4. 最後の階段に到達するまで、2と3の手順を繰り返します。

上記の手順に基づいて、以下にPythonのコード例を示します。

def climb_stairs(cost):
    n = len(cost)
    if n == 0:
        return 0
    if n == 1:
        return cost[0]

    dp = [0] * n
    dp[0] = cost[0]
    dp[1] = cost[1]

    for i in range(2, n):
        dp[i] = cost[i] + min(dp[i-1], dp[i-2])

    return min(dp[-1], dp[-2])
# 使用例
stairs = [10, 15, 20, 25, 30]
min_cost = climb_stairs(stairs)
print("最小コスト:", min_cost)

上記のコードは、与えられた階段のリストに対して最小コストを計算します。この例では、階段のコストが [10, 15, 20, 25, 30] となっており、最小コストを計算して表示します。