为什么只有20分?求dalao帮忙看看。

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

```c #include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() { long int n,a[10001],sum=0; scanf("%ld",&n); for(int i=0;i<n;i++)//读入正整数 { scanf("%ld",&a[i]); } for(int j=0;j<n;j++)//看第j个数 { for(int i=0;i<j;i++)//判断 { for(int k=0;k<i;k++) { if(a[i]+a[k]==a[j]) sum++; } } } printf("%ld",sum); return 0; } ```
by crikee @ 2019-02-03 01:16:13


你这个判断条件不对,因为题目里意思找出a=b+c; 但你的语句实现的a=b+b也判断成是可以的,还有原题中4=1+3和4=2+2只算成一种情况,sum只加一次,你自己看着改改。我自己是个小菜鸟,就不帮你改了~
by fuzhen @ 2019-02-03 05:26:03


i和k的循环要从0跑到n,只要互不相等就行了
by 落灰 @ 2019-02-03 08:38:24


``` #include<bits/stdc++.h> using namespace std; long int n,a[10001],sum=0; bool used[10001]={false}; int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int j=0;j<n;j++) for(int i=0;i<n;i++) for(int k=0;k<n;k++) if(i!=j&&i!=k&j!=k) if(a[i]+a[k]==a[j]&&!used[j]) { used[j]=true; sum++; } cout<<sum; return 0; } ```
by 落灰 @ 2019-02-03 08:40:32


|