下面是我的代码
先把它降序排列,然后再一个个访问,倘若满足题设就计数,并且注意到了一个较大的数若可以多次被后面的数表出,则只会记录一次(用bool数组实现),我觉得逻辑没啥问题了啊,求助大佬们,给我指出错误之处,谢谢!
#include <iostream>
#include <vector>
#include<algorithm>
bool customize(int a,int b)
{
return a>b;
}
using namespace std;
int main()
{
int sum=0,n;
cin>>n;
vector<int> a;
vector<bool> b(n,1);
for(int i=0;i<=n-1;i++)
{
int temp;
cin>>temp;
a.push_back(temp);
}
sort(a.begin(),a.end(),customize);
for(int i=0;i<=n-3;i++)
{
for(int j=1;j<=n-2-i;j++)
{
for(int x=1;x<=n-1-j;x++)
{
if(b[i])
{
if(a[i]==a[i+j]+a[j+x])
{
sum++;
b[i]=0;
}
}
}
}
}
cout<<sum;
return 0;
}