@[tttqqqq](/user/622722) 或许可以帮到你:
```c++
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int num[105] = {};
for (int i = 0; i < n; ++i)
cin >> num[i];
int count = 0;
int check[105] = {};
for (int i = 0; i < n; ++i)
for (int j = i + 1; j < n; ++j)
for (int k = 0; k < n; ++k)
if (num[i] + num[j] == num[k] && check[k] == 0)
{
++count;
check[k] = 1;
}
cout << count;
return 0;
}
```
by Jasper08 @ 2022-03-23 18:38:43
1.你找到一个符合条件的数,需要把他标记,不然会重复,见第4行和第15,17行;
2.建议你把13行和15行换一下,~~没有为什么~~;
3.把第2层循环的break删去。
------------
## AC代码:
```cpp
#include <stdio.h>
int s[100];//定义一个全局数组,保存是否被2个数相加得到;
int main(){
int a,b[100],c=0,i,d,e,f,g;
scanf("%d ",&a);
for(i=0;i<a;i++)
scanf("%d",&b[i]);
for(d=0;d<a;d++)
{
for(e=d+1;e<a;e++)
{
for(f=0;f<a;f++)
if(b[f]==b[d]+b[e]&&s[f]==0)//如果这个数没有被得到过,那就再判断,不然会重复;
{
s[f]=1;//标记得到;
c++;
break;
}
}
}
printf("%d",c);
}
```
by mengtian_ @ 2022-03-23 19:03:28
~~我看了全评论区就你的题最简单...~~
by mengtian_ @ 2022-03-23 19:05:01
@[tttqqqq](/user/622722)
by mengtian_ @ 2022-03-23 19:06:11