真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python組合怎么使用

這篇文章主要介紹“Python組合怎么使用”,在日常操作中,相信很多人在Python組合怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python組合怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了洪湖免費建站歡迎大家使用!

題目


給定兩個整數(shù) n 和 k,返回 1 ... n 中所有可能的 k 個數(shù)的組合。

示例:

輸入: n = 4, k = 2
輸出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

解題思路


思路:組合數(shù)

先審題,題目要求給定 n,返回 1...n 中所有可能的 k 個數(shù)組合。我們可以發(fā)現(xiàn),這其實就是高中數(shù)學(xué)概念上的組合數(shù)問題。

組合的定義:從 n 個不同元素中,任取 m($m \leq n$)個不同元素組成一組,稱為組合。

組合數(shù)的定義:從 n 個不同元素中,任取 m($m \leq n$)個不同元素的所有組合的個數(shù),叫做組合數(shù),記為 $C_{n}^{m}$。

組合數(shù)有這樣一個性質(zhì):

$$C_{n+1}^{m} = C_{n}^{m} + C_{n}^{m-1}$$

這里我們令 n' = n+1,那么上面的式子則會變成:

$$C_{n'}^{m} = C_{n'-1}^{m} + C_{n'-1}^{m-1}$$

其實也就等同于:

$$C_{n}^{m} = C_{n-1}^{m} + C_{n-1}^{m-1}$$

這里我們可以這樣去理解上面的式子。假設(shè)現(xiàn)在從 n 個元素選 m 個元素,也就是 $C_{n}^{m}$。這里,我們先選擇一個需要特殊考慮的元素,那么就會有以下兩種情況:

  • 當(dāng)選取的元素中不含這個特殊元素,那么就需要在剩余的 n-1 個元素中選出 m 個元素,也就是 $C_{n-1}^{m}$;

  • 當(dāng)選取的元素中含有這個特殊元素,那么就需要從剩余的 n-1 個元素中選出 m-1 個元素,也就是 $C_{n-1}^{m-1}$ 。

最終,將兩種情況結(jié)合起來,從 n 個元素選 m 個元素的情況。

那么就按照這個思路,進(jìn)行實現(xiàn),這里每次選取特殊元素為可選元素集合中最小的元素。

具體代碼實現(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 個元素選擇完成,添加到返回列表中
            if k == 0:
	            # 這里注意添加的是副本
	            # 具體原因,建議自行調(diào)試查看
                ans.append(tmp[::])
                return
            # 表示剩余元素不夠選擇 k 個元素,直接返回
            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é)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享文章:Python組合怎么使用
分享URL:http://weahome.cn/article/ijsidg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部