第一行包含一个正整数N (1≤N≤500)。第二行为N个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同.
只输出一个整数,即这N个数中包含多少对相反数.
5
1 2 3 -1 -2
样例输出:
2
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
int solve(vector<int> v1)
{
vector<int>::iterator it1;
vector<int>::iterator it2;
int num;
int sum = 0;
for (it1 = v1.begin(); it1 != v1.end();) // 因为下面会把首个元素,所以不用it1++
{
num = *it1; // 将容器首个元素放在num中
v1.erase(it1); // 删除首个元素,防止重复计数
for (it2 = v1.begin(); it2 != v1.end(); it2++)
{
if (*it2 == -num)
{
sum++;
break;
}
}
}
return sum;
}
int main(void)
{
vector<int> v1;
int times;
cin >> times;
int num;
for (int i = 0; i < times; i++)
{
cin >> num;
v1.push_back(num);
}
clock_t start = clock();
cout << solve(v1) << endl;
clock_t end = clock();
cout << "运行时间:" << double(end - start) / CLOCKS_PER_SEC << endl;
return 0;
}
原文:https://www.cnblogs.com/huangyuechujiu/p/13743106.html