1 条题解
-
0would LV 7 @ 2021-11-21 16:05:55
数组哈希
将每个数组元素的值作为下标,如果存在这个值,将其值置为1;
再O(n^2)遍历数组求出两个元素的和,如果和作为下标的值为1,
表示数组中存在这个和,结果+1;#include<iostream> using namespace std; int a[110],b[100100];//a[]表示数组元素,b[]表示元素值作为下标; int main() { int n,num=0; cin>>n; for(int i=0;i<n;++i){ cin>>a[i]; b[a[i]]=1;//数组a的每个元素值在b[]中作为下标,将其值置为1,表示这个和存在; } for(int i=0;i<n;++i){ for(int j=i+1;j<n;++j) if(b[a[i]+a[j]]==1) {//和为下标存在,值为1 b[a[i]+a[j]]=0;//避免重复,计算后置为0 num++;//结果+1; } } cout<<num; return 0; }
- 1
信息
- ID
- 1010
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 18
- 已通过
- 11
- 通过率
- 61%
- 上传者