求大佬帮我看看那里出问题了(实在没看出来)

P2141 [NOIP2014 普及组] 珠心算测验

```cpp #include<iostream> #include<cstring> #include<algorithm> #include<stdio.h> using namespace std; int a[108]={0},b[108]={0}; int main() { int i,j,n; scanf("%d",&n); int x=n-1; for(int i=0;i<n;i++){ cin>>a[i]; } int sum=0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ for(int k=0;k<n;k++){ if(a[k]+a[j]==a[i]&&k!=j&&b[i]==0){ sum++; b[i]=1; } } } } cout<<sum; return 0; } ```
by charliegong @ 2019-06-16 11:38:25


@[Me丨丶言](/space/show?uid=115991) 判断错了
by charliegong @ 2019-06-16 11:38:47


```cpp #include<bits/stdc++.h> using namespace std; int main(){ int n,a[101],b[101]={0},i,j,k,x,s=0; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(a[i]>a[j]){x=a[i];a[i]=a[j];a[j]=x;} for(i=1;i<n-1;i++) for(j=i+1;j<n;j++) for(k=j+1;k<=n;k++) if(a[i]+a[j]==a[k]) b[k]=1; for(i=1;i<=n;i++) s+=b[i]; cout<<s<<endl; return 0; } ```
by CCGTA5888 @ 2019-06-16 11:50:16


其中有多少个**数**,恰好等于集合中另外两个(不同的)数之和?
by C6H10O5 @ 2019-06-16 11:53:16


@[Me丨丶言](/space/show?uid=115991) 蒟蒻的~~UKE~~ ~~CE~~ ~~TLE~~ AC代码
by CCGTA5888 @ 2019-06-16 11:57:13


@[charliegong](/space/show?uid=95626) 为什么呢?我的a[i],a[j]是加数和被加数,a[k]是遍历一下看看有没有等于的,且三者互不相同,所以i!=k,j!=k, 这里有错误吗?
by Me丨丶言 @ 2019-06-16 21:18:55


@[C6H10O5的13的J](/space/show?uid=155272) 因为是集合,所以每个数都不会重复的把。所以不会有多个数同时等于另外两数之和把。
by Me丨丶言 @ 2019-06-16 21:20:02


@[CCGTA5888](/space/show?uid=149703) 我知道我哪里错了,题目是问的有多少个数等于另外两数之和,而我求的是集合中两数相加等于另外一个数的个数。 谢了谢了
by Me丨丶言 @ 2019-06-16 21:36:58


|