这个办法有点暴力,而且有些地方似乎有些多余,但比较洛谷中的题解或许有不同之处。
#include<stdio.h>
int main() {
int s[100];//收取系统给出的数字
int g[100] = { 0 };//统计s中每个数字被组成的次数,开始记作零次
int n;
int times = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &s[i]);
}
for (int i = 0; i < n; i++) {//选取a + b = c中的a,不用考虑n,n+正整数不可能出现在集合之中
for (int j = i + 1; j < n; j++) {//选取a + b = c中的b
for (int k = 0; k < n; k++) {//选取a + b = c中的c
if (s[i] + s[j] == s[k]) {
g[k]++;//如果c = a + b,给c对应的出现次数+1
}
}
}
}
for (int i = 0; i < n; i++) {
if (g[i] != 0) {//不用管被组成几次,题目要求的是数字个数,只要不为零即可,要统计几次,可以int一个sum求和
times++;
}
}
printf("%d", times);
}
欢迎指正