You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现计算给定正整数n的符合规则的加法等式总数的函数

实现方案

问题本质

你要计算的合法等式数量,本质是**正整数n的严格分拆数(分拆项为互不相等的正整数)减去1。减1是为了排除仅由n自身组成的无效情况(要求至少2个操作数),完全匹配你给出的所有测试用例。
要求操作数降序排列只是分拆结果的格式要求,不会影响计数结果——每一组互不相等的正整数求和等于n的组合,都可以唯一整理为降序序列,二者一一对应。

实现思路

这个问题可以转化为01背包问题求解:将1~n的正整数作为可选物品,每个物品最多选1次,求刚好装满容量为n的背包的方案总数,再减去仅选n本身的1种无效方案即可。

代码实现(Python)

def count_valid_equations(n):
    # n小于3时不存在至少两个不同正整数求和等于n的情况
    if n < 3:
        return 0
    # dp[i] 表示凑出和为i的不同严格分拆方案数
    dp = [0] * (n + 1)
    dp[0] = 1
    # 遍历所有可选数值
    for num in range(1, n + 1):
        # 倒序遍历避免重复选取同一个数
        for i in range(n, num - 1, -1):
            dp[i] += dp[i - num]
    # 减去仅选n自身的无效情况
    return dp[n] - 1

测试验证

你给出的测试用例运行结果完全匹配:

  • count_valid_equations(2) → 0
  • count_valid_equations(3) → 1
  • count_valid_equations(5) → 2
  • count_valid_equations(10) → 8

内容的提问来源于stack exchange,提问作者C B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:45:02