本题要求对结果进行去重,因此可以使用集合来进行辅助,可用两个集合分别存储输入和结果,然后比较;也可用一个集合单独存结果进行比较。
#include<bits/stdc++.h>
#include<iostream>
#include<set>
using namespace std;
void countEqual(int a[],int n)
{
int count=0;
int i,j,k;
set<int> s;//创建一个int类型集合,集合中每个数只允许出现一次
int record;
for(i=0;i<n;i++)//数组中所有数进行相加比较
{
for(j=i+1;j<n;j++)
{
record = a[i]+a[j];
s.insert(record);//将所有相加结果,不重复地加入到s中
}
}
for(k=0;k<n;k++)//比较集合中数在初始集合中出现的个数
{
for (set<int>::iterator it = s.begin(); it != s.end(); ++it)
{
if(a[k]==*it)
count++;
}
}
cout<<count;
}
int main()
{
int a[100],n,i;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
countEqual(a,n);
}