C++ 统计数对个数:a-b=c 的高效算法
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 的条件,然后统计满足条件的数对个数。
具体步骤如下:
- 读取输入的 n 和 c。
- 读取输入的一串数,存储在数组 a 中。
- 定义一个变量 count,用于统计满足条件的数对个数,初始化为 0。
- 使用两重循环遍历数组 a 中的所有数对。外层循环控制第一个数 a,内层循环控制第二个数 b。
- 外层循环从第一个数开始,遍历到倒数第二个数。
- 内层循环从外层循环的下一个数开始,遍历到最后一个数。
- 判断当前数对是否满足 a-b=c 的条件。如果满足条件,将 count 加 1。
- 输出统计结果 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 的数对个数了。
原文地址: https://www.cveoy.top/t/topic/igxr 著作权归作者所有。请勿转载和采集!