Python程式查詢某些字母和大小為k的組合中獲得字母'a'的機率
假設我們有一個包含n個不同英文字母的陣列。我們還有一個值k。我們可以以均勻分佈選擇k個不同的索引(從1開始)。我們必須找到至少一個選定的k個索引包含字母'a'的機率。
因此,如果輸入類似於letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k = 2,則輸出將為64.28%。組合例如(1, 2), (1, 3),共有28種組合,但其中一些例如(1,2), (1,3), (6,7)等18對包含'a',所以18/28 = 0.6428。
為了解決這個問題,我們將遵循以下步驟:
- contain := 0
- total := 0
- 對於letters中每個包含k個元素的組合c,執行以下操作:
- 如果c中存在"a",則:
- contain := contain + 1
- total := total + 1
- 如果c中存在"a",則:
- 返回 contain/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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP