Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでの最小コスト登山階段


階段があると仮定します。ここで、i番目のステップには負でないコスト値cost[i]が割り当てられます。費用を支払うとき、私たちは1つまたは2つのステップを登ることができます。フロアの最上部に到達するための最小コストを見つける必要があります。また、インデックス0のステップから開始することも、インデックス1のステップから開始することもできます。

したがって、入力がcost =[12,17,20]の場合、出力は17になります。そのコストを支払ってトップに移動する必要があるため、ステップ1から開始するのに最も安いポジションです。

これを解決するには、次の手順に従います-

  • dp:=コストと同じサイズの配列で、0で埋めます
  • dp [0]:=コスト[0]
  • コストのサイズ>=2の場合、
    • dp [1]:=コスト[1]
  • コストのサイズが2から1の範囲のiの場合、実行します
    • dp [i]:=コスト[i]+最小のdp[i-1]、dp [i-2]
  • dp [-1]、dp[-2]の最小値を返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def minCostClimbingStairs(self, cost):
      dp = [0] * len(cost)
      dp[0] = cost[0]
      if len(cost) >= 2:
         dp[1] = cost[1]
      for i in range(2, len(cost)):
         dp[i] = cost[i] + min(dp[i-1], dp[i-2])
      return min(dp[-1], dp[-2])
ob = Solution()
print(ob.minCostClimbingStairs([12,17,20]))

入力

[12,17,20]

出力

17

  1. 最小コストパスのためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −コストマトリックスと位置(m、n)が与えられているので、(0、0)から(m、n)に到達するための最小コストパスのコストを見つける必要があります。各セルは、あるセルから別のセルに移動するためのコストを表します。 次に、以下の実装のソリューションを見てみましょう- 例 # dynamic approach R = 3 C = 3 def minCost(cost, m, n):    # initialization    tc = [[0 for x in range

  2. Xで割り切れる最小のK桁の数のためのPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 整数nとdが与えられます。 dで割り切れる最小のn桁の数を見つける必要があります。 アプローチ 1. FirstNowでは、MIN:最小のn桁の数値(1000 ... n回)を計算してみましょう 2.ここで、MIN%Xが0の場合、ans =MIN 3.それ以外の場合、ans =(MIN + X)-((MIN + X)%X)) これは、範囲[MIN ... MIN+X]にdで割り切れる数があるためです。 それでは、実装を見てみましょう- 例 def answer(n, d):