题解

1 条题解

  • 0
    @ 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%
上传者