いくつかの文字とkサイズの組み合わせで文字「a」を取得する確率を見つけるPythonプログラム
n個の異なる英字の配列があるとします。別の値kもあります。一様分布のk個の異なるインデックス(1インデックス)を選択できます。選択したk個のインデックスの少なくとも1つに文字「a」が含まれる確率を見つける必要があります。
したがって、入力が文字=['a'、'c'、'a'、'b'、'l'、'a'、'b'、'z'] k =2の場合、出力は64.28%になります。 (1、2)、(1、3)のような組み合わせが28の組み合わせがあるようにありますが、それらのいくつかは(1,2)、(1,3)、(6,7)のように18のペアが7を保持しているので18/28=0.6428。
これを解決するには、次の手順に従います-
- contains:=0
- 合計:=0
- k個の要素を持つ文字のcの組み合わせごとに、
- 「a」がcに存在する場合、
- contains:=contains + 1
- 合計:=合計+ 1
- 「a」がcに存在する場合、
- return contains / total
例
理解を深めるために、次の実装を見てみましょう-
from itertools import combinations def solve(letters, k): contain = 0 total = 0 for c in combinations(letters, k): if "a" in c: contain += 1 total += 1 return contain/total letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k = 2 print(solve(letters, k))
入力
['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'], 2
出力
0
-
Pythonを使用して最大の確率でパスを見つけるプログラム
n個のノード(ノードには0から番号が付けられます)を持つ無向加重グラフがあるとします。このグラフは、エッジリストを使用して入力として与えられ、各エッジeについて、そのエッジ確率[e]を通過する成功の確率があります。開始ノードと終了ノードもあります。最初から最後まで成功の確率が最大のパスを見つけて、成功の確率を返す必要があります。パスが見つからない場合は、0を返します。 したがって、入力が次のような場合 ノード0から2へのパスが2つあるため、出力は0.24になります。1つは確率0.2、もう1つはノード1を経由するパスの確率は0.4 * 0.6 =0.24で、これが最大です。 これを解
-
Pythonでノードと子孫の違いを見つけるプログラム
二分木があるとすると、ノードとその子孫の間で最大の絶対差を見つける必要があります。 したがって、入力が次のような場合 その場合、最大の絶対差はノード8と1の間であるため、出力は7になります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullでない場合、 正と負の無限大のリストを返す left:=dfs(ノードの左側) right:=dfs(ノードの右) res:=(left [0]、right [0]の最小値とノードの値、およびleft [1]、right [1]とノードの値の最大値)とのペア ans: