和为定值的多个数

Posted Sawyer Ford

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了和为定值的多个数相关的知识,希望对你有一定的参考价值。

给定N个数,从中找出若干个数,使得这些数的和等于sum。

TwoSum

void TwoSum(int data[], unsigned int length, int sum)
{
    std::sort(data, data + length);
    int begin = 0;
    int end = length - 1;
    while (begin < end) {
        int cur_sum = data[begin] + data[end];
        if (cur_sum == sum) {
            printf("%d %d\n", data[begin], data[end]);
            begin++;
            end--;
        } else {
            if (cur_sum < sum)
                begin++;
            else
                end--;
        }
    }
}

MultiSum

0-1背包问题。

void MultiSum(int data[], unsigned int length, int sum, bool flag[], int flag_size)
{
    if (length <= 0 || sum <= 0)
        return;
    if (sum == data[length - 1]) {
        for (int i = 0; i < flag_size; i++) {
            if (flag[i] == 1)
                printf("%d+", data[i]);
        }
        printf("%d\n", data[length - 1]);
    }
    flag[length - 1] = 1;
    MultiSum(data, length - 1, sum - data[length - 1],flag, flag_size);
    flag[length - 1] = 0;
    MultiSum(data, length - 1, sum,flag, flag_size);
}

 

参考资料:

寻找和为定值的多个数

以上是关于和为定值的多个数的主要内容,如果未能解决你的问题,请参考以下文章

和为定值的m个数

和为定值的两个数

编程之法section II: 2.2 和为定值的两个数

寻找和为定值的两个数

算法笔记_037:寻找和为定值的两个数(Java)

使用java,列举所有给定数组中和为定值的组合