C++ 算法实现:计算数串中满足 a-b=c 的数对个数
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;
}
代码解释:
- 首先读取输入的整数 n 和 c,以及数串 nums。
- 使用两层循环遍历数串中的每一个数对。
- 对于每个数对 (nums[i], nums[j]),判断是否满足条件 nums[i] - nums[j] == c 或者 nums[j] - nums[i] == c。
- 如果满足条件,则计数器 count 加 1。
- 最后输出计数结果 count。
总结:
本文提供了使用 C++ 代码实现计算给定数串中满足 a-b=c 的数对个数的算法。该算法简单易懂,易于实现。通过两层循环遍历所有可能的数对,并判断是否满足条件,最终得出结果。该算法无需使用 unordered_map,有效降低了空间复杂度。
原文地址: http://www.cveoy.top/t/topic/ifIi 著作权归作者所有。请勿转载和采集!