C++程序设计:相反数
【问题描述】
有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。
【输入形式】
第一行包含一个正整数 N。(1 ≤ N ≤ 500)。
第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。
【输出形式】
只输出一个整数,即这 N 个数中包含多少对相反数。
【样例输入】
5
1 2 3 -1 -2
【样例输出】
2
#include <iostream>
using namespace std;
int main(){
int n=0,i=1,m=1;
cin>>n;
int a[n+1];
for(i=1;i<=n;i++)
cin>>a[i];
int count=0;
for(i=1;i<=n;i++){
for(m=1;m<=n;m++){
if (a[m]+a[i]==0)
count++;
}
}
count/=2;
cout<<count;
return 0;
}
注:上述算法的时间复杂度达到了O(N2)。可以采用先排序、再双指针的算法,可以将时间复杂度优化至O(NlogN)。但考虑到这是博主大一期间的题目与代码,就原样放上去了。温故而知新!