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

PythonでD日以内にパッケージを発送する能力


D日以内にある港から別の港に出荷されるパッケージをコンベヤーベルトに持っていると仮定します。ここで、コンベヤーベルトのi番目のパッケージの重量はweights[i]です。毎日、ベルトに荷物を積んで船に積み込みます。船の最大耐荷重を超える重量を積載することはありません。コンベヤーベルト上のすべてのパッケージがD日以内に出荷されるようになる、船の最小重量容量を見つける必要があります。したがって、入力が[3,2,2,4,1,4]のようで、D =3の場合、出力は6になります。これは、6の出荷容量が、3日間ですべてのパッケージを出荷するための最小値であるためです。 −

  • 1日目:3、2

  • 2日目、2、4

  • 3日目:1、4

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

  • 再帰関数solve()を定義します。これは、重み配列、maxWeight、および船の配列を取ります。これは、-

    のように機能します。
  • インデックス:=0

  • 0から船の配列の長さまでの範囲のiの場合

    • 船[i]:=0

    • 一方、インデックス<ウェイトと出荷の長さ[i]+ウェイト[インデックス]<=maxWeight

      • 船[i]:=船[i]+重み[インデックス]

      • インデックスを1増やします

  • index =重みの長さの場合はtrueを返し、それ以外の場合はfalseを返します

  • 主な方法は次のように機能します

  • 出荷:=Dと同じサイズの配列で、0で埋めます

  • maxWeight:=重みの最大値

  • low:=maxWeight、high:=maxWeight+ウェイト配列の長さ+1

  • 低<高

    • 中:=低+(高-低)/ 2

    • Solve(weights、mid、ships)がtrueの場合、high:=mid、それ以外の場合、low:=mid + 1

  • ハイに戻る

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

class Solution(object):
   def shipWithinDays(self, weights, D):
      ships = [0 for i in range(D)]
      max_w = max(weights)
      low = max_w
      high = max_w * len(weights)+1
      while low<high:
         mid = low + (high-low)//2
         if self.solve(weights,mid,ships):
            high = mid
         else:
            low = mid+1
      return high
   def solve(self,weights,max_w,ships):
      index = 0
      for i in range(len(ships)):
         ships[i] = 0
         while index < len(weights) and ships[i]+weights[index]<= max_w:
            ships[i] += weights[index]
            index+=1
      return index == len(weights)
ob = Solution()
print(ob.shipWithinDays([3,2,2,4,1,4],3))

入力

[3,2,2,4,1,4]
3

出力

6

  1. Pipを使用したPython用パッケージ

    Pythonでパッケージを管理するのは、面倒な作業になる可能性があります。この記事では、便利なコマンドについて説明し、pipを使用してパッケージを管理するのに役立つリソースと、pipenvとvirtualenvの違いについて説明します。また、Djangoという名前の強力なフレームワークについても説明します。 ピップとは何ですか? Pipは便利なパッケージマネージャーです。 Pipは再帰的頭字語で、「PipInstallsPackages」または「PipInstallsPython」を表すことができます。または、pipは「優先インストーラープログラム」の略です。 パッケージを更新する方法

  2. PythonでAnaconda環境にパッケージを追加する

    既存のanaconda環境にパッケージを追加する方法は複数あります。 方法1 −一般的なアプローチの1つは、「Anaconda Navigator」を使用して、anaconda環境にパッケージを追加することです。 「AnancondaNavigator」を開くと、ホームページは次のようになります- [ホーム]タブのすぐ下にある[環境]タブに移動し、そこからすべてのパッケージがインストールされているものとインストールされていないものを確認できます。 anacondaナビゲーターを使用してパッケージをインストールするのは非常に簡単です。必要なパッケージを検索し、パッケージを選択し、