@[jfy2204](/user/877497)
第二个循环错了
by cflsfzh @ 2023-06-02 21:45:06
@[jfy2204](/user/877497)
另外,需要特判跳出两重循环(或者相等不处理)
by cflsfzh @ 2023-06-02 21:50:03
没听懂,能讲讲代码吗
by jfy2204 @ 2023-06-02 21:54:07
@[jfy2204](/user/877497)
因为可能有不止一种情况两数相加等于另一个数
如:1+4=5,2+3=5
造成影响:会多加
解决:只要判定成立,跳出两重循环,判定下一个数
by cflsfzh @ 2023-06-02 21:57:12
代码,已测AC
```
#include<bits/stdc++.h>
using namespace std;
int n,a[106],ans,i,j,k,t;
int main()
{
cin>>n;
for(i=0;i<n;i++) cin>>a[i];
for(i=0;i<n;i++){
t=0;
for(j=0;j<n;j++){
for(k=j+1;k<n;k++)
if(a[i]==a[j]+a[k]){
ans++;
t=1;
break;
}
if(t==1) break;
}
}
cout<<ans;
return 0;
}
```
by cflsfzh @ 2023-06-02 21:58:20
@[jfy2204](/user/877497)
by cflsfzh @ 2023-06-02 22:02:20
请问第17行是什么意思呀
```
if(t==1) break;
```
by jfy2204 @ 2023-06-02 22:03:45
@[jfy2204](/user/877497)
如果已经通过了判断,t的值会变成1,并且跳到j层循环,之后就会执行这个判断,t的值如果为1,就会跳出到x层循环,执行下一个数。
by cflsfzh @ 2023-06-02 22:12:40
x改为i层循环,打错了
by cflsfzh @ 2023-06-02 22:13:32
@[jfy2204](/user/877497)
by cflsfzh @ 2023-06-02 22:13:48