【发布时间】:2019-04-14 10:26:52
【问题描述】:
我想找到 -n 到 n 范围内四个数字的所有组合,它们加起来为零。有没有有效的算法来解决这个问题?
#include <iostream>
using namespace std;
int main()
{
int i, j, k, l;
int size = 20;
for (i = -size; i <= size; i++)
{
for (j = -size; j <= size; j++)
{
for (k = -size; k <= size; k++)
{
for (l = -size; l <= size; l++)
{
if (i + j + k + l == 0)
{
cout << i << " " << j << " " << " " << k << " " << l << endl;
}
}
}
}
}
return 0;
}
【问题讨论】:
-
是的,这类问题通常通过某种形式的动态规划来解决。我想说这个问题属于cs.stackexchange.com
-
是np难题吗?
-
您不必考虑所有数字为正数或所有数字为负数
-
@learning_cpp np 难有什么意义?这不是决策问题。我猜想组合的数量可能是 n 的指数函数。所以不,不可能有多项式解决方案。
-
@Quimby 你是对的,所以看起来问题在自然界中解决起来很昂贵
标签: c++ combinations