qrd456789 2022-03-06 22:54 采纳率: 77.8%
浏览 28
已结题

为什么我写的题才20分 哪里出现了问题

img


为什么我写的题才20分 哪里出现了问题 不胜感激 谢谢大家帮助!!

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-07 06:47
    关注

    你的代码中第二个循环i从3开始,就忽略两个数的和是第一个或第二个元素的情况。

    #include <iostream>
    #include <unordered_set>
    
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
        unordered_set<int> s;
        for (int i = 0; i < n; i++)
        {
            int a;
            cin >> a;
            s.insert(a);
        }
        int count = 0;
        for (auto it1 = s.begin(); it1 != s.end(); ++it1)
        {
            auto it2 = it1;
            ++it2;
            for (; it2 != s.end(); ++it2)
            {
                if (s.find(*it1 + *it2) != s.end())
                    count++;
            }
        }
        cout << count;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月6日