【发布时间】:2016-01-17 04:44:19
【问题描述】:
请指定完整的程序...
例如,
a[2] = {3,1};
子集将是
{}
{3}
{1}
{3,1}
各个子集的总和将是
{} -> 0
{3} -> 3
{1} -> 1
{3,1} -> 4
数组中各个子集的总和,如
aa[] = {0,3,1,4};
编辑:我试过这个:
-
n是数组的大小 -
a是输入数组 -
aa是输出数组,包含各个子集的总和。
代码如下:
aa[0] = 0;
z = 1;
for (c = 1; c <= n; c++) {
for (d = 0; d <= n - c; d++) {
if (c == 1) {
sum1 += a[d];
} else {
k = d + c - 1;
for (j = k; j < n; j++) {
for (i = d; i < k; i++)
sum1 += a[i];
sum1 += a[j];
}
}
aa[z] = sum1;
z++;
sum1 = 0;
}
}
【问题讨论】:
-
提示:
n元素的数组中有2**n不同的子集,一个简单的解决方案设置最多 30 个元素就足够了。 -
显示你的尝试。
标签: c arrays subset-sum