Pythonを使用して最大人口年を見つけるプログラム
2つの列(出生、死亡)を持つテーブルがあり、各行はi番目の人の出生年と死亡年を表しているとします。ある年の人口yは、yの間に生きている人々の数です。 yが包括的範囲[birth_i、death_i-1]にある場合、i番目の人はy年の人口でカウントされます。 (その人は彼らが死んだ年には数えられません)。したがって、人口が最も多い最も早い年を見つける必要があります。
したがって、入力が次のような場合
誕生 | 死 |
1970 | 2010 |
1960 | 2020 |
1940 | 1970 |
ターゲットと一致する値が1つしかないため、出力は2になります。つまり、nums [4]であるため、i=4になります。|4-2| =2。
これを解決するには、次の手順に従います-
-
d:=マップ。キーが見つからない場合は0を返します
-
res:=2つのアイテムを含むリスト[2051、0]
-
出生YOBの各年、およびマトリックス内の死亡YODの年について、実行します
-
YOBからYODの範囲の年については、実行してください
-
d [年]:=d[年]+1
-
d [year]> =res [1]の場合、
-
d[年]>res[1]の場合、
-
res:=2つの要素を持つリスト[年、d[年]]
-
-
それ以外の場合
-
res:=2つの要素を持つリスト[(年の最小値とres [0])、res [1]]
-
-
-
-
-
res [0]
を返します
理解を深めるために、次の実装を見てみましょう-
例
from collections import defaultdict def solve(matrix): d = defaultdict(int) res = [2051, 0] for YOB, YOD in matrix: for year in range(YOB, YOD): d[year] += 1 if d[year] >= res[1]: if d[year] > res[1]: res = [year, d[year]] else: res = [min(year, res[0]), res[1]] return res[0] matrix = [[1970,2010],[1960,2020],[1940,1970]] print(solve(matrix))
入力
[[1970,2010],[1960,2020],[1940,1970]]
出力
1960
-
Pythonで最大の建物の高さを見つけるプログラム
値nと、制限と呼ばれるペアの別のリストがあるとします。都市にn棟の新しい建物を建てたいと思っています。ただし、制限はほとんどありません。私たちは一列に建てることができ、建物には1からnまでのラベルが付けられています。制限には2つのパラメーターがあるため、restrictions [i] =(id_i、max_height_i)は、id_iの高さがmax_height_i以下でなければならないことを示します。新しい建物の高さに関する市の制限は次のとおりです- 各建物の高さは0または正の値である必要があります。 最初の建物の高さは0でなければなりません。 隣接する2つの建物の高さ
-
Pythonを使用して最大の確率でパスを見つけるプログラム
n個のノード(ノードには0から番号が付けられます)を持つ無向加重グラフがあるとします。このグラフは、エッジリストを使用して入力として与えられ、各エッジeについて、そのエッジ確率[e]を通過する成功の確率があります。開始ノードと終了ノードもあります。最初から最後まで成功の確率が最大のパスを見つけて、成功の確率を返す必要があります。パスが見つからない場合は、0を返します。 したがって、入力が次のような場合 ノード0から2へのパスが2つあるため、出力は0.24になります。1つは確率0.2、もう1つはノード1を経由するパスの確率は0.4 * 0.6 =0.24で、これが最大です。 これを解