用c++语言写以下程序:题目描述 给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A - B = C 的数对的个数(不同位置的数字一样的数对算不同的数对)。输入格式 输入共两行。 第一行,两个正整数 N,C。 第二行,N 个正整数,作为要求处理的那串数。输出格式 一行,表示该串正整数中包含的满足A−B=C 的数对的个数。
时间: 2023-06-26 10:05:55 浏览: 140
计算器 用c++写的
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n, c;
cin >> n >> c;
unordered_map<int, int> m;
int res = 0;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
res += m[num - c];
m[num]++;
}
cout << res << endl;
return 0;
}
```
解题思路:
题目要求计算所有满足 A - B = C 的数对的个数,即 A = B + C。我们可以用哈希表来记录已经出现过的数,并且记录每个数出现的次数。对于每个数 num,我们在哈希表中查找 num - c 出现的次数,将其加到结果中,然后将 num 记录到哈希表中。这样就可以遍历整个数列,得到满足条件的数对的个数。
时间复杂度:O(n)
空间复杂度:O(n)
阅读全文