c - 找到不同数字组合的数量,使其总和等于总和

标签 c algorithm

我想找出非负数(可以是任何数字,不固定)的不同组合的数量,使其总和等于提供的总和。

例如:我有 3 个数字,我想找到不同的数字组合,使得总和为 4。num 的值从 0 开始。没有负数。

对于 3 个和为 4 的数字,组合是

2 0 2
2 2 0
0 2 2
0 1 3
3 1 0
0 3 1 
1 0 3
1 3 0
3 0 1
0 0 4
4 0 0
0 4 0
2 1 1
1 2 1
1 1 2

我以这个为例:Finding the total number combinations for an integer using three numbers

但问题是它只使用了三个数字。

任何算法或代码都会有用。谢谢。

最佳答案

您可以将其视为将 s 个无法区分的硬币放入 n 个可区分的 jar 中的方法的数量。 (在示例中,s=4 和 n=3)。

如解释here ,即 C(n+s-1,s-1),在示例中给出 15。

关于c - 找到不同数字组合的数量,使其总和等于总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365824/

相关文章:

c - 尝试从文件描述符读取事件时选择 block

总结所有组合的数字列表的算法

algorithm - 房屋贷款计算公式(算法)?

在 Eclipse 上用 C 编码

c - C中的双指针疑惑

c - openssl/sha.h 似乎计算出了错误的哈希值

ios - 使用 Objective C 和 GLKit 存储模型信息的数据结构

performance - 快速解压算法

algorithm - 以下情况的有用数据结构

算法 - 网格图查找具有特定属性的子 block 数