ステアクライミング問題の基本的なアプローチは、与えられた階段の数と各階段のコストが与えられた場合、最小のコストで階段を登る方法を見つけることです。以下に、効率的なステアクライミングアルゴリズムの手順を示します。
- メモリを初期化し、最初の階段までのコストを0とします。
- 現在の階段から次の階段に進むための最小コストを計算します。これは、現在の階段のコストと次の階段のコストを比較して決定します。
- 最小コストをメモリに保存し、次の階段に進みます。
- 最後の階段に到達するまで、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]
となっており、最小コストを計算して表示します。