C++ 统计数对个数:a-b=c 的高效算法

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

输入

共两行。第一行两个整数 n, c 。

第二行 a1,a2,a4... 个整数 ( ),作为要处理的那串数。

输出

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

样例输入

6 3 8 4 5 7 7 4

输出

5

C++ 代码实现 (不使用 unordered_map):

可以使用两重循环遍历所有可能的数对,判断是否满足 a-b=c 的条件,然后统计满足条件的数对个数。

具体步骤如下:

  1. 读取输入的 n 和 c。
  2. 读取输入的一串数,存储在数组 a 中。
  3. 定义一个变量 count,用于统计满足条件的数对个数,初始化为 0。
  4. 使用两重循环遍历数组 a 中的所有数对。外层循环控制第一个数 a,内层循环控制第二个数 b。
    • 外层循环从第一个数开始,遍历到倒数第二个数。
    • 内层循环从外层循环的下一个数开始,遍历到最后一个数。
  5. 判断当前数对是否满足 a-b=c 的条件。如果满足条件,将 count 加 1。
  6. 输出统计结果 count。
#include <iostream>
#include <vector>
using namespace std;

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

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

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

    cout << count << endl;

    return 0;
}

这样就可以计算出满足 a-b=c 的数对个数了。

C++ 统计数对个数:a-b=c 的高效算法

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

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