C++ 算法实现:计算数串中满足 a-b=c 的数对个数

给出一串数以及一个数字 c,要求计算出所有 a-b=c 的数对的个数(不同位置得到数字一样的数对算不同的数对)。

输入

共两行。第一行两个整数 n,c。 第二行 n 个整数 a1,a2,a3,...an(|ai|<=1e9),作为要处理的那串数。

输出

该数串中包含的满足 a-b=c 的数对的个数

样例输入

6 3
8 4 5 7 7 4

样例输出

5

**C++,不使用 unordered_map 内容:**可以使用两层循环遍历数串中的每一个数对,判断是否满足 a-b=c 的条件,并计数。

具体代码如下:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, c;
    cin >> n >> c;

    vector<int> nums(n);
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
    }

    int count = 0;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (nums[i] - nums[j] == c || nums[j] - nums[i] == c) {
                count++;
            }
        }
    }

    cout << count << endl;

    return 0;
}

代码解释:

  1. 首先读取输入的整数 n 和 c,以及数串 nums。
  2. 使用两层循环遍历数串中的每一个数对。
  3. 对于每个数对 (nums[i], nums[j]),判断是否满足条件 nums[i] - nums[j] == c 或者 nums[j] - nums[i] == c。
  4. 如果满足条件,则计数器 count 加 1。
  5. 最后输出计数结果 count。

总结:

本文提供了使用 C++ 代码实现计算给定数串中满足 a-b=c 的数对个数的算法。该算法简单易懂,易于实现。通过两层循环遍历所有可能的数对,并判断是否满足条件,最终得出结果。该算法无需使用 unordered_map,有效降低了空间复杂度。

C++ 算法实现:计算数串中满足 a-b=c 的数对个数

原文地址: http://www.cveoy.top/t/topic/ifIi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录