@[brian0410](/user/276225) 输入的数字一定有单调性吗?不一定哦Q。
所以你的
```cpp
for(int j=1;a[j]<=i-1;j++)
```
当 $a_j\geqslant i$ 时 for 循环就直接跳出了,但是后面可能有一些合法的数字。
把 for 循环条件改为 $j\leqslant n$,之前的循环条件移到下面的 if 语句,所以改为这样:
```cpp
for(int j=1;j<=n;j++){
if(i>a[j]&&b[i-a[j]]&&i-a[j]!=a[j]){
ans++;
break;
}
}
```
by MarchKid_Joe @ 2023-02-10 07:47:45
```
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,n1,n2,n3,a[105],ans = 0;
bool vis[10005] = {0};
cin >> n;
for(int i = 1;i <= n;i++){
cin >> a[i];
}
for(int i = 1;i <= n;i++)
{
n1 = a[i];
for(int j = 1;j <= i-1;j++)
{
n2 = a[j];
for(int k = 1;k <= n;k++)
{
n3 = a[k];
if(n1+n2==n3&&vis[n3]==false)
{
vis[n3] = true;
ans++;
}
}
}
}
cout << ans;
return 0;
}
by DREAM_flyfish @ 2023-02-18 10:34:45