我面临着问题。当我使用向量时,它运行成功,但通过 10/100 并再次部分解决,我尝试将它与 set 一起使用,我得分 30/100。我想知道我应该使用哪种方法来清除这个问题。
我现在应该使用哪种方法我不想要解决方案而是逻辑。达到这个问题我可能会出错。在第一个数组中,我计算了所有爱丽丝号码和其他所有鲍勃号码。然后计算重复的数量并打印出来。
我写的代码是
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cin>>a>>b;
int counter = 0;
set<int> s1;
set<int> s2;
while(a--)
{
int f, s;
cin>>f>>s;
for(int i = f; i< s; i++)
{
s1.insert(i);
// counter++;
}
}
while(b--)
{
int f, s;
cin>>f>>s;
for(int i = f; i< s; i++)
{
s2.insert(i);
// counter++;
}
}
// for (auto it = s1.begin(); it != s1.end(); it++)
// cout << *it << " ";
// cout<<endl;
// for (auto it = s2.begin(); it != s2.end(); it++)
// cout << *it << " ";
// set<int> s(s1);
// s.insert(s2.begin(), s2.end());
// for (auto const &e: s) {
// std::cout << e << ' ';
// }
vector<int> common_data;
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(), std::back_inserter(common_data));
// cout<<endl;
for (auto it = common_data.begin(); it != common_data.end(); it++)
// cout << *it << " ";
counter++;
cout<<counter;
return 0;
}