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

Pythonでgodownに入れることができるボックスの数を調べるプログラム


整数を含む2つの配列があるとします。 1つのリストには、いくつかのユニット幅ボックスの高さが含まれ、別の配列には、godownの部屋の高さが含まれます。部屋には0...nの番号が付けられ、部屋の高さは配列godownのそれぞれのインデックスに示されます。ゴダウンに押し込める箱の数を調べなければなりません。いくつかの点に注意する必要があります

  • ボックスを重ねることはできません。

  • ボックスの順序は変更できます。

ボックスは、左からでも右からでも、どの側からでもゴダウンに入れることができます。ボックスが部屋の高さよりも高い場合、そのボックスとその右側のすべてのボックスをゴダウンに押し込むことはできません。

したがって、入力がboxs =[4、5、6]、godown =[4、5、6、7]の場合、出力は3になります。入力として指定された3つのボックスすべてをgodownに入れることができます。

Pythonでgodownに入れることができるボックスの数を調べるプログラム

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

  • リストボックスを降順で並べ替えます

  • l:=0

  • r:=倉庫のサイズ-1

  • bi:=0

  • ret:=0

  • bi<ボックスのサイズとl<=r、do

    • godown [l]> godown [r]の場合、

      • box [bi] <=godown [l]の場合、

        • ret:=ret + 1

        • l:=l + 1

      • それ以外の場合

        • box [bi] <=godown [r]の場合、

          • ret:=ret + 1

          • r:=r-1

      • bi:=bi + 1

  • retを返す

例(Python)

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

def solve(boxes, godown):
   boxes.sort(reverse = True)

   l, r = 0, len(godown) - 1
   bi, ret = 0, 0
   while bi < len(boxes) and l <= r:
      if godown[l] > godown[r]:
         if boxes[bi] <= godown[l]:
            ret += 1
            l += 1
      else:
         if boxes[bi] <= godown[r]:
            ret += 1
            r -= 1
      bi += 1

   return ret

print(solve([4, 5, 6], [4, 5, 6, 7]))

入力

[4, 5, 6], [4, 5, 6, 7]

出力

3

  1. Pythonで捕まえることができる雨の総量を見つけるためのプログラム

    n個の非負の整数の配列があるとします。これらは、各バーの幅が1である高さを表しており、雨が降った後にどれだけの水を捕まえることができるかを計算する必要があります。したがって、マップは次のようになります- ここでは、8つの青いボックスがあることがわかります。したがって、出力は8になります。 これを解決するには、次の手順に従います- スタックst、water:=0およびi:=0を定義します whilei<身長のサイズ =height [i]の場合、iをスタックにプッシュし、iを1増やします それ以外の場合 x:=スタックトップ要素、スタックからトップを削除 スタックが空でない場合

  2. Pythonでツリーを2つのツリーに分割できる方法の数を数えるプログラム

    値0、1、および2を含む二分木があるとします。ルートには少なくとも1つの0ノードと1つの1ノードがあります。ここで、ツリーのエッジを削除し、ツリーが2つの異なるツリーになる操作があるとします。 2つのツリーのいずれにも0ノードと1ノードの両方が含まれないように、1つのエッジを削除できる方法の数を見つける必要があります。 したがって、入力が次のような場合 0から2のエッジしか削除できないため、出力は1になります。 これを解決するには、次の手順に従います- count:=[0、0、0] 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 pre:=