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

Pythonですべての優れたパフォーマーに支払う必要のある最低額を見つけるためのプログラム


評価と呼ばれる数値のリストを提供し、これがコーダーのパフォーマンススコアを示しているとします。ここで、マネージャーは、2人のコーダーが隣接している場合を除いて、すべてのコーダーに1000ルピーを与えたいと考えています。上記の制約に従って、マネージャーが支払うことができる最低額を見つける必要があります。

したがって、入力がratings =[1、2、5、1]のようである場合、それぞれのコーダーに支払うことができる最小値は[1000、2000、3000、1000]であるため、出力は7000になります。

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

  • pay:=評価と同じサイズのリスト、最初はすべての値が1

  • 範囲1から評価のサイズ-1までのiの場合、実行

    • 評価[i]>評価[i-1]の場合、

      • pay [i]:=pay [i-1] +1

  • 評価の範囲サイズが-2から0のiの場合、1ずつ減少します。

    • 評価[i]>評価[i+1]の場合、

      • pay [i]:=最大pay[i]およびpay[i + 1] +1

  • リターン(支払いの要素の合計)* 1000

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

class Solution:
   def solve(self, ratings):
      pay=[1 for _ in ratings]
      for i in range(1, len(ratings)):
         if ratings[i] > ratings[i-1]:
            pay[i] = pay[i-1]+1
      for i in range(len(ratings)-2,-1,-1):
         if ratings[i] > ratings[i+1]:
         pay[i] = max(pay[i], pay[i+1]+1)
      return sum(pay)*1000
ob = Solution()
ratings = [1, 2, 5, 1]
print(ob.solve(ratings))

入力

[1, 2, 5, 1]

出力

7000

  1. Pythonを使用してすべてのノードに到達するための頂点の最小数を見つけるプログラム

    n個の頂点とノードに0からn-1までの番号が付けられた有向非巡回グラフがあるとします。グラフはエッジリストで表されます。ここで、edges [i] =(u、v)はノードuからノードv。グラフ内のすべてのノードに到達できる頂点の最小セットを見つける必要があります。 (頂点は任意の順序で返すことができます)。 したがって、入力が次のような場合 これらの2つの頂点は他のどの頂点からも到達できないため、出力は[0,2,3]になります。したがって、それらから開始すると、すべてをカバーできます。 これを解決するには、次の手順に従います- n:=エッジのサイズ all_nodes:=

  2. Pythonでフォルダからホームに戻るために必要な最小限のジャンプを見つけるためのプログラム

    フォルダに入力するパスがあるログがあるとすると、-のような異なる記号が存在する可能性があります。 ../:現在のフォルダから親フォルダに移動します。 (メインフォルダにいる場合は、場所を変更しないでください。) ./:現在のフォルダに残ります。 x /:xという名前の子フォルダーに移動します。 ログから、停止した最後のフォルダーからメインフォルダーに戻るために必要な操作の最小数を見つける必要があります。 したがって、入力がlogs =[Dir1 /、 Dir2 /、 ../、 Dir2 /、 Dir3 /、 ./]の場合、出力は3 画像から、家に着くには3回