Pythonの別のボックス内に収めることができるボックスの最大数を見つけるためのプログラム
各行が特定のボックスの高さと幅を表すボックスのリストがあるとします。最初のボックスが2番目のボックスよりも小さい場合(幅と高さの両方が他のボックスよりも小さい場合)、ボックスを別のボックスに入れることができます。ボックスに収めることができるボックスの最大数を見つける必要があります。
したがって、入力が次のような場合
12 | 12 |
10 | 10 |
6 | 6 |
5 | 10 |
[12、12]ボックスに入れることができる[10、10]の中にボックス[6、6]を収めることができるので、出力は3になります。
これを解決するには、次の手順に従います-
- 関数insert_index()を定義します。これには時間がかかります、this_h
- l:=0
- r:=arrのサイズ-1
- res:=0
- l <=rの場合、do
- m:=l +(r --l)// 2
- cur_h:=arr [m]
- cur_h
- res:=m
- l:=m + 1
- それ以外の場合、
- r:=m-1
- [cur_w、cur_h]:=ボックス
- index:=insert_index(heights、cur_h)
- heights [index]> =cur_hの場合、
- heights [index]:=cur_h
- res:=resとインデックスの最大値
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, matrix): matrix = sorted(matrix, key=lambda x: (x[0], -x[1])) n = len(matrix) heights = [float("inf")] * (n + 1) heights[0] = float("-inf") res = 0 for box in matrix: cur_w, cur_h = box index = self.insert_index(heights, cur_h) if heights[index] >= cur_h: heights[index] = cur_h res = max(res, index) return res def insert_index(self, arr, this_h): l = 0 r = len(arr) - 1 res = 0 while l <= r: m = l + (r - l) // 2 cur_h = arr[m] if cur_h < this_h: res = m l = m + 1 else: r = m - 1 return res + 1 ob = Solution() matrix = [ [12, 12], [10, 10], [6, 6], [5, 10] ] print(ob.solve(matrix))
入力
matrix = [ [12, 12], [10, 10], [6, 6], [5, 10] ]
出力
3
-
Pythonで収集できるコインの最大数を見つけるためのプログラム
各セルにいくつかのコインが格納されている2Dマトリックスがあるとします。 [0,0]から始めて、右または下にしか移動できない場合、右下隅で収集できるコインの最大数を見つける必要があります。 したがって、入力が次のような場合 1 4 2 2 0 0 0 5 [1、4、2、2、5] のパスをたどると、出力は14になります。 これを解決するために、次の手順に従います- 範囲1からAの行数までのrについては、次のようにします A [r、0]:=A [r、0] + A [r-1、0] 範囲1からAの列数までのcにつ
-
Pythonプログラムは最大3つ。
3つの数abとcが与えられた場合、私たちのタスクは、与えられた数の中から最大の要素を見つけなければならないということです。 例 Input: a = 2, b = 4, c = 3 Output: 4 アルゴリズム Step 1: input three user input number. Step2: Add three numbers to list. Step 3: Using max() function to find the greatest number max(lst). Step 4: And finally we will print maximum numbe