题解:
2026-08-25 11:21:20
发布于:山西
1阅读
0回复
0点赞
题目大意
给定 m 个整数,找出其中的支撑数。支撑数要求:不能是第一个、最后一个元素,该数要严格大于左边邻居,同时严格大于右边邻居。找到所有支撑数,每个数单独占一行输出。
输入:第一行整数 m,3≤m≤100;第二行 m 个整数。
输出:每一行输出一个支撑数。
解题思路
读取数字个数 m,把 m 个数字存入数组。
遍历数组,跳过第 1 个和最后 1 个元素,所以下标从 2 到 m‑1(数组从 1 开始存储)。
判断条件:当前元素大于左边元素,并且大于右边元素。满足条件就是支撑数。
将符合条件的数字输出,每输出一个就换行。
关键点
数组下标从 1 开始存储数据,循环 i 从 2 到 m‑1。i=1 是第一个,i=m 是最后一个,都不能参与判断。
判断条件是a[i]>a[i‑1] && a[i]>a[i+1],两个条件要同时成立。
找到一个就立刻输出,每个支撑数单独占一行。
样例解释
输入:
14
1 3 2 4 1 5 3 9 7 10 8 23 85 43
遍历中间位置:
3 大于左右 1、2 →支撑数
4 大于左右 2、1 →支撑数
5 大于左右 1、3 →支撑数
9 大于左右 3、7 →支撑数
10 大于左右 7、8 →支撑数
85 大于左右 23、43 →支撑数
输出每个数,每行一个:
3
4
5
9
10
85
AC 代码
#include <iostream>
using namespace std;
int a[105];
int main() {
int m;
cin >> m;
for(int i = 1; i <= m; i++) {
cin >> a[i];
}
for (int i = 2; i <= m-1; i++) {
if(a[i]>a[i-1] && a[i]>a[i+1]){
cout << a[i] << endl;
}
}
return 0;
}
这里空空如也








有帮助,赞一个