V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zming
V2EX  ›  问与答

组合算法求思路

  •  
  •   zming · 2023-07-19 01:24:04 +08:00 · 947 次点击
    这是一个创建于 529 天前的主题,其中的信息可能已经有所发展或是发生改变。
    给定一个任意长度的十进制数字,要求按照顺序任意组合,最大不超过 26 。

    示例:
    输入 1213
    输出[[1,2,1,3], [12, 1, 3], [1, 21, 3], [1, 2, 13], [12, 13]]

    如果大于等于 2 个大于 10 的数字,我的思路就断了, 比如 12,13 的情况,想不到后面如果数字更长的话怎么处理
    4 条回复    2023-07-19 10:38:18 +08:00
    cosmic
        1
    cosmic  
       2023-07-19 03:50:29 +08:00   ❤️ 1
    ```
    def getAllCombinations(num):
    s = str(num)
    n = len(s)
    @lru_cache(None)
    def dfs(idx):
    if idx == n:
    return [[]]
    ans = []
    if s[idx] != "0":
    for i in range(idx, n):
    t = int(s[idx:i+1])
    tmp = dfs(i + 1)
    for j in tmp:
    ans.append([t] + j)
    return ans

    return dfs(0)
    ```
    cosmic
        2
    cosmic  
       2023-07-19 03:51:15 +08:00   ❤️ 1
    cosmic
        3
    cosmic  
       2023-07-19 04:00:09 +08:00   ❤️ 1
    第一个回复漏了不大于 26 的条件,而且 V 站的格式也有问题,更新了解法在第二个回复的链接里
    zming
        4
    zming  
    OP
       2023-07-19 10:38:18 +08:00
    感谢 我研究下
    @cosmic
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2802 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:44 · PVG 22:44 · LAX 06:44 · JFK 09:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.