有道难题练习赛2中的c题

描述 给定一个整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 输入 第一行是一个整数T,表示一共有多少组数据。 1<= T <= 100
接下来的每组数据共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个整数组成的数列。
输出 对于每组数据,输出一个整数(占一行),就是数列中等于其他两个数之和的数的个数。 样例输入 2
4
1 2 3 4
5
3 5 7 9 10
样例输出 2
1注意:这道题包括0和负数,故份两种情况。 #include int main(){ int n,t,m,i,j,k,sum,f,T,ff; scanf("%d",&T); long a[200]; while(T--){ sum=0;ff=0; scanf("%d",&n); for(i=1; i<=n; i++){ scanf("%ld",&a[i]); if(a[i]<=0) ff=1; } for(i=1; ia[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } if(ff==0){ for(i=n; i>2; i--){ f=0; for(j=i-1; j>1; j--) for(k=i-2; k>0; k--) if(a[i]==a[j]+a[k]){ f=1; break; } if(f==1) sum++; } } else{ for(i=n; i>0; i--){ f=0; for(j=n; j>0; j--) for(k=n; k>0; k--) if(a[i]==a[j]+a[k]&&i!=j&&j!=k&&i!=k){ f=1; break; } if(f==1) sum++; } } printf("%d/n",sum); } return 0; }

你可能感兴趣的:(c/c++)