c++ - 集合 {1, 2, 3, ... N} 的划分

标签 c++ algorithm

给定子集 {1, 2, 3, .... N}。我必须找到从 1 到 N 的所有整数的集合可以分成两个总和相等的子集的方法数。

我脑子里什么都没有。我想尝试“暴力搜索”,但它可以限制时间。有什么快速算法吗?

最佳答案

对于从 1 到 n 的 k,它可以在多项式时间内计算为 (1 + x^k) 乘积中 x^(n(n+1)/4) 的系数。有几种方法可以评估产品;将各项相乘就足够了。

关于c++ - 集合 {1, 2, 3, ... N} 的划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971124/

相关文章:

performance - 数学算法

python - 求两个数组的和

C++ 模板特化 <int&> 不获取 int

c - 如何仅使用两个指针来反转单向链表?

arrays - 使用给定的字典从一个字符串到达​​另一个字符串

C++ 分配仅具有已知列和未知行的矩阵时出现问题

java - 反转二叉树的交替级别

c++ - 嵌套 opencl 的内核函数

c++ - 用零初始化 std::chrono::time_point 变量

c++ - 排序后在未排序数组中查找元素位置的最佳方法