题解:P2141 [NOIP2014 普及组] 珠心算测验
china_history · · 题解
题意
题意为寻找两个不同的数,看看是否等于数组中的另一个数即可。
思路
每次来循环第一个加数,建立一个标记
for (int i = 1; i <= n; i++) {//循环第一个加数
bool ok = false;//是否成立
for (int j = 1; j <= n && !ok//不符合才循环; j++) {//循环第二个加数
for (int k = j + 1; k <= n && !ok//不符合才循环; k++) {//循环和
if (i != j && i != k) {//如果不相等
if (a[i] == a[j] + a[k]) {//两数相加等于第三个数
ok = true;//符合
}
}
}
}
if (ok) {//符合sum就加一
sum++;
}
}
整体代码
//搁这不是给你抄的!
#include <bits/stdc++.h>
using namespace std;
int n, a[101];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int sum = 0;
for (int i = 1; i <= n; i++) {
bool ok = false;
for (int j = 1; j <= n && !ok; j++) {
for (int k = j + 1; k <= n && !ok; k++) {
if (i != j && i != k) {
if (a[i] == a[j] + a[k]) {
ok = true;
}
}
}
}
if (ok) {
sum++;
}
}
cout << sum;
}