看了下题解才发现 1+4=5 与 2+3=5 只能算一种!
“加数和被加数必须是集合中的两个不同的数”,其和也不会重复!
所以我建议不要忘了判断没有有相同的和。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m[100];
vector<int> s;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> m[i];
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(i == j) continue;
for(int k = 0; k < n; k++) {
if(k == i || k == j) continue;
if(m[k] == m[i] + m[j]) {
bool b = true;
for(int x : s) {
if(x == m[k]) {
b = false;
break;
}
}
if(b) s.push_back(m[i] + m[j]);
}
}
}
}
cout << s.size();
return 0;
}