這篇文章主要介紹“Python組合怎么使用”,在日常操作中,相信很多人在Python組合怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”Python組合怎么使用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了洪湖免費(fèi)建站歡迎大家使用!
給定兩個(gè)整數(shù) n 和 k,返回 1 ... n 中所有可能的 k 個(gè)數(shù)的組合。
示例:
輸入: n = 4, k = 2 輸出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
先審題,題目要求給定 n,返回 1...n 中所有可能的 k 個(gè)數(shù)組合。我們可以發(fā)現(xiàn),這其實(shí)就是高中數(shù)學(xué)概念上的組合數(shù)問題。
組合的定義:從 n 個(gè)不同元素中,任取 m($m \leq n$)個(gè)不同元素組成一組,稱為組合。
組合數(shù)的定義:從 n 個(gè)不同元素中,任取 m($m \leq n$)個(gè)不同元素的所有組合的個(gè)數(shù),叫做組合數(shù),記為 $C_{n}^{m}$。
組合數(shù)有這樣一個(gè)性質(zhì):
$$C_{n+1}^{m} = C_{n}^{m} + C_{n}^{m-1}$$
這里我們令 n' = n+1,那么上面的式子則會(huì)變成:
$$C_{n'}^{m} = C_{n'-1}^{m} + C_{n'-1}^{m-1}$$
其實(shí)也就等同于:
$$C_{n}^{m} = C_{n-1}^{m} + C_{n-1}^{m-1}$$
這里我們可以這樣去理解上面的式子。假設(shè)現(xiàn)在從 n 個(gè)元素選 m 個(gè)元素,也就是 $C_{n}^{m}$。這里,我們先選擇一個(gè)需要特殊考慮的元素,那么就會(huì)有以下兩種情況:
當(dāng)選取的元素中不含這個(gè)特殊元素,那么就需要在剩余的 n-1 個(gè)元素中選出 m 個(gè)元素,也就是 $C_{n-1}^{m}$;
當(dāng)選取的元素中含有這個(gè)特殊元素,那么就需要從剩余的 n-1 個(gè)元素中選出 m-1 個(gè)元素,也就是 $C_{n-1}^{m-1}$ 。
最終,將兩種情況結(jié)合起來,從 n 個(gè)元素選 m 個(gè)元素的情況。
那么就按照這個(gè)思路,進(jìn)行實(shí)現(xiàn),這里每次選取特殊元素為可選元素集合中最小的元素。
具體代碼實(shí)現(xiàn)如下(遞歸方法)。
from typing import List class Solution: def combine(self, n: int, k: int) -> List[List[int]]: ans = [] tmp = [] def helper(special, n, k): # k 個(gè)元素選擇完成,添加到返回列表中 if k == 0: # 這里注意添加的是副本 # 具體原因,建議自行調(diào)試查看 ans.append(tmp[::]) return # 表示剩余元素不夠選擇 k 個(gè)元素,直接返回 if k > n: return tmp.append(special) helper(special+1, n-1, k-1) tmp.pop() helper(special+1, n-1, k) helper(1, n, k) return ans # n = 4 # k = 2 # solution = Solution() # ans = solution.combine(n, k) # print(ans)
到此,關(guān)于“Python組合怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
分享名稱:Python組合怎么使用
網(wǎng)站網(wǎng)址:http://muchs.cn/article16/ijsidg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、企業(yè)建站、網(wǎng)站營銷、響應(yīng)式網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)