我没有读懂你的代码,我是这样做的,希望对你有帮助!
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[105];
bool ans[20005];
int main()
{
int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
ans[a[i]+a[j]]=true;//能分解成两个不同数相加
for(int i=1;i<=n;i++)//扫一遍,有多少个符合要求
sum+=ans[a[i]];
cout<<sum<<endl;
return 0;
}
```
by sunyizhe @ 2022-10-06 15:46:41
```
int arr[a],pl[20000];
```
应该是先读入a再初始化吧。
另外建议用全局数组,arr开到10001.
by sichao @ 2022-10-06 15:47:47
```cpp
#include<iostream>
using namespace std;
int main(){
int a,c;
cin>>a;
int arr[a],pl[20000]={0};
for(int i=0;i<a;i++){
cin>>arr[i];
}
for(int i=0;i<a;i++){
for(int k=i+1;k<a;k++){
for(int j=0;j<a;j++){
if(arr[j]!=arr[k]&&arr[j]!=arr[i]&&arr[i]+arr[k]==arr[j]&&pl[j]!=1)
{
c++;
pl[j]=1;
}
}
}
}
cout<<c; //
return 0;
}
```
by siyue @ 2022-10-06 15:48:52