第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

生成數(shù)字的分區(qū)

生成數(shù)字的分區(qū)

我需要一種算法來生成所有可能的正數(shù)分區(qū),然后我想到了一個(gè)算法(作為答案發(fā)布),但這是指數(shù)時(shí)間。該算法應(yīng)返回所有可能的方式,以小于或等于其自身的正數(shù)之和表示一個(gè)數(shù)字。因此,例如對(duì)于數(shù)字5,結(jié)果將是:54 + 13 + 23 + 1 + 12 + 2 + 12 + 1 + 1 + 11 + 1 + 1 + 1 + 1所以我的問題是:有沒有更有效的算法呢?編輯:?jiǎn)栴}的標(biāo)題是“一個(gè)數(shù)字的總和分解”,因?yàn)槲艺娴牟恢肋@叫什么。ShreevatsaR指出它們被稱為“分區(qū)”,因此我相應(yīng)地編輯了問題標(biāo)題。
查看完整描述

3 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

它稱為分區(qū)。[另請(qǐng)參閱Wikipedia:分區(qū)(數(shù)論)。]


分區(qū)的數(shù)量p(n)呈指數(shù)增長(zhǎng),因此生成所有分區(qū)的所有操作都必須花費(fèi)指數(shù)時(shí)間。


也就是說,您可以做得比代碼更好。請(qǐng)參見David Eppstein在Python Algorithms and Data Structures中的此版本或其更新版本。


查看完整回答
反對(duì) 回復(fù) 2019-11-29
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是我在Python中的解決方案(指數(shù)時(shí)間):


q = { 1: [[1]] }


def decompose(n):

    try:

        return q[n]

    except:

        pass


    result = [[n]]


    for i in range(1, n):

        a = n-i

        R = decompose(i)

        for r in R:

            if r[0] <= a:

                result.append([a] + r)


    q[n] = result

    return result

 


>>> decompose(5)

[[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]]


查看完整回答
反對(duì) 回復(fù) 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 839 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)