采用了哈希算法,但是不知道怎样条件限制去除重复计数
查看原帖
采用了哈希算法,但是不知道怎样条件限制去除重复计数
1292265
Zzz123456789101112楼主2024/4/11 15:42
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;  // 输入集合中数的个数
    vector<int> nums(n);
    unordered_set<int> numSet;  // 用于存储数的集合,便于快速查找

    for(int i = 0; i < n; ++i) {
        cin >> nums[i];     // 输入每一个正整数
        numSet.insert(nums[i]); // 将数加入哈希表
    }

    int count = 0;  // 用于统计满足条件的数的个数
    for (int i = 0; i < n; ++i) {
        for (int j = i + 1; j < n; ++j) {
            // 对于每一对不同的数nums[i]和nums[j],检查它们的和是否在集合中
            int sum = nums[i] + nums[j];
            // 如果和存在于集合中,且不是由相同元素构成的和(即不是自己加自己),则满足条件
            if (numSet.find(sum) != numSet.end()) {
                count++;
            }
        }
    }

    cout << count << endl;  // 输出满足条件的数的个数

    return 0;
}
2024/4/11 15:42
加载中...