专栏文章
题解:P2141 [NOIP2014 普及组] 珠心算测验
P2141题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqmettz
- 此快照首次捕获于
- 2025/12/04 07:10 3 个月前
- 此快照最后确认于
- 2025/12/04 07:10 3 个月前
题意
题意为寻找两个不同的数,看看是否等于数组中的另一个数即可。
思路
每次来循环第一个加数,建立一个标记 并在不成立时继续循环第二个加数,再在不成立时循环和,看三个数中是否不相等,并且两数相加等于第三个数,就让 成立。最后在每次第一层循环末尾时,看看 是否成立,成立将总和加一。输出总和即可。让我们来看看核心代码的意思吧:
CPPfor (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++;
}
}
整体代码
CPP//搁这不是给你抄的!
#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;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...