查找要加到總計中的唯一和(僅使用大于0的正整數)

從長遠來看,這將用于查找拼寫另一個單詞的單詞組。(用于縱橫字謎)

但現在我只想知道一種廣義算法,來計算用求和得到數字的方法。

假設我有一個6個字母的單詞,從子單詞“創建”該單詞的唯一可能方法是長度為5,4,3,2,1的單詞(我猜是該單詞的單詞和單詞變位):

6 = 6 
6 = 5 + 1
6 = 4 + 2
6 = 4 + 1 + 1
6 = 3 + 3
6 = 3 + 2 + 1
6 = 3 + 1 + 1 + 1
6 = 2 + 2 + 2
6 = 2 + 2 + 1 + 1
6 = 2 + 1 + 1 + 1 + 1
6 = 1 + 1 + 1 + 1 + 1 + 1

所以我想讓代碼在python的數組中生成這個單詞,這樣我就可以查找長度組合的單詞。我可能想排除1個字母的單詞和相同長度的單詞,但因為最多只有26個(在英語中只有I和a,也許如果你包括俚語U),我認為這不會使它太復雜。

這不需要太優化,因為通常像15這樣的值是我要達到的最高值(我甚至可以把它全部打印出來,然后我就有了它pre-solved,但對于15來說這是一個合理的值。

? 最佳回答:

這是你的問題的遞歸解決方案。我們基本上檢查所有可能的總和組合,直到找到一個有效的組合,然后將其添加到總和列表中。

def find_sums(n):
    sums = []
    all_sums = []
    find_sums_helper(n, n, sums, all_sums)
    return all_sums

def find_sums_helper(n, n_max, sums, all_sums):
    if n == 0:
        all_sums.append(sums)
        return
    
    for i in reversed(range(1, min(n, n_max) + 1)):
        find_sums_helper(n - i, i, sums + [i], all_sums)

print(find_sums(6))

Output:

[[6], [5, 1], [4, 2], [4, 1, 1], [3, 3], [3, 2, 1], [3, 1, 1, 1], [2, 2, 2], [2, 2, 1, 1], [2, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]]
主站蜘蛛池模板: 亚洲av成人一区二区三区观看在线 | 国内精品一区二区三区最新| 国产成人精品视频一区二区不卡| 国产成人无码一区二区三区| 日本伊人精品一区二区三区| 国产三级一区二区三区| 曰韩精品无码一区二区三区| 麻豆精品人妻一区二区三区蜜桃| 国产成人精品a视频一区| 中文字幕av日韩精品一区二区 | 精品福利视频一区二区三区 | 男人免费视频一区二区在线观看| 亚洲一区二区在线视频| 伦理一区二区三区| V一区无码内射国产| 日本中文字幕在线视频一区| 韩国一区二区视频| 久久国产精品无码一区二区三区 | 亚洲国产一区二区三区 | 国产精品538一区二区在线| 亚洲AV成人精品日韩一区| 亚洲欧洲日韩国产一区二区三区| 国产午夜精品一区理论片| 国产精品区一区二区三在线播放| 精品国产一区二区22| 精品一区二区三区免费| 丝袜无码一区二区三区| 国产自产在线视频一区| 在线精品动漫一区二区无广告| 立川理惠在线播放一区| 久久精品中文字幕一区| av无码一区二区三区| 亚洲日本一区二区三区| 精品一区精品二区制服| 国产一区二区三区四| 色狠狠一区二区三区香蕉蜜桃| 无码人妻一区二区三区免费n鬼沢| 秋霞无码一区二区| 一区二区三区四区在线视频| 中文字幕日韩一区二区三区不| 日产精品久久久一区二区|