描述
给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。
输入
共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个不大于10000的正整数组成的数列,相邻两个整数之间用单个空格隔开。
输出
一个整数,即数列中等于其他两个数之和的数的个数。
样例输入
4 1 2 3 4
样例输出
2
注意要记录这个数是否已经满足条件,不然会重复计算。
代码
#include <iostream>
#include <algorithm>
using namespace std;
int num[105];
int vis[105];
int main(){
int n,count=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>num[i];
}
sort(num,num+n);
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
for(int k=j+1;k<i;k++){
if(num[i]==num[j]+num[k]&&!vis[i]){
count++;
vis[i]=1;
break;
}
}
}
}
cout << count <<endl;
return 0;
}