keywords: [Algorithms]算法题:计算整数数组中,任意两个元素组合的差值,等于指定值的组合个数

题目:
给定一个数组a,再给定一个值k,数组a的任意两个元素组合,他们的差值要求等于k,求出这种组合的对数。比如数组{1, 5, 3, 4, 2},k=2,那么组合对数等于3,因为符合要求的组合为{1,3}、{4,2}、{5,3}。

代码:

#include <iostream>
#include <vector>

int main(int argc, char* argv[])
{
    std::vector<int> a;
    a.push_back(1);
    a.push_back(5);
    a.push_back(3);
    a.push_back(12);
    a.push_back(4);
    a.push_back(6);
    a.push_back(9);
    a.push_back(2);

    int k = 3;

    int count = 0;
    std::vector<std::vector<int>> paired_eles(a.size(), std::vector<int>());
    for (size_t i = 0; i < a.size(); i++)
    {
        for (size_t j = i + 1; j < a.size(); j++)
        {
            if (abs(a[i] - a[j]) == k)
            {
                paired_eles[i].push_back(j);
                count++;
                std::cout << a[i] << "," << a[j] << std::endl;
            }
        }
    }

    std::cout << count << std::endl;

    system("pause");
}

输出结果:

1,4
5,2
3,6
12,9
6,9
5

天下之至柔,驰骋天下之至坚。----《道德经》