zming
V2EX  ›  问与答

组合算法求思路

  •  
  •   zming · Jul 19, 2023 · 1785 views
    This topic created in 1052 days ago, the information mentioned may be changed or developed.
    给定一个任意长度的十进制数字,要求按照顺序任意组合,最大不超过 26 。

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

    如果大于等于 2 个大于 10 的数字,我的思路就断了, 比如 12,13 的情况,想不到后面如果数字更长的话怎么处理
    4 replies    2023-07-19 10:38:18 +08:00
    cosmic
        1
    cosmic  
       Jul 19, 2023   ❤️ 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  
       Jul 19, 2023   ❤️ 1
    cosmic
        3
    cosmic  
       Jul 19, 2023   ❤️ 1
    第一个回复漏了不大于 26 的条件,而且 V 站的格式也有问题,更新了解法在第二个回复的链接里
    zming
        4
    zming  
    OP
       Jul 19, 2023
    感谢 我研究下
    @cosmic
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5800 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 02:20 · PVG 10:20 · LAX 19:20 · JFK 22:20
    ♥ Do have faith in what you're doing.