一、题目
二、使用步骤
1.解题
求相反数的队数,可以利用相反数的绝对值相等
的思路来解题。
2.代码
dev c++ 5.11
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int ans=0;
int a[1001]={0};
for(int i=1;i<=n;i++){
int temp=0;
cin>>temp;
int tempabs=abs(temp);
a[tempabs]++;
if(a[tempabs]==2) ans++;
}
cout<<ans<<endl;
return 0;
}
该处使用的url网络请求的数据。
3.提交结果
总结
1.代码思路
该代码是一个统计绝对值相同的数字对个数的程序,其思路为:
-
读入n个整数,然后每次读入一个数temp,计算它的绝对值tempabs。
-
使用大小为1010的数组a来统计每个绝对值出现的次数。将a[tempabs]加1。
-
每次将a[tempabs]加1后,如果a[tempabs]为2,说明当前这个绝对值出现了两次,可以构成一个数字对,将ans加1。
-
最后输出ans即为所求的绝对值相等的数字对个数。
需要注意的是,这里用到了计数排序
的思想,将每个数的绝对值作为数组a的下标,这样能够节省查找是否有相同绝对值的数的时间,从而提高代码效率。
2.其他
还可以利用相反数相加为0的思想:
for(int i=0;i<n;i++){
int temp=0,Temp=0;
cin>>temp;
Temp=abs(temp);
A[Temp]+=temp;
if(A[Temp]==0) cnt++;
}