zoukankan      html  css  js  c++  java
  • 和为定值的多个数

    给定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
    ", 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
    ", 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);
    }

    参考资料:

    寻找和为定值的多个数

    k Sum

  • 相关阅读:
    ebs R12 支持IE11
    reloc: Permission denied
    3.23考试小记
    3.21考试小记
    3.20考试小记
    3.17考试小记
    3.15考试小记
    3.13考试小记
    3.12考试小记
    3.10考试小记
  • 原文地址:https://www.cnblogs.com/gattaca/p/7820160.html
Copyright © 2011-2022 走看看