竞赛
考级
#include <iostream> using namespace std; int main(){ int n,a[1500]; cin >> n; for(int i=1;i<=n;i++){ cin >> a[i]; } for(int i=2;i<n;i++){ if(a[i] > a[i - 1] && a[i] > a[i + 1]){ cout << a[i] << endl; } } return 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 代码
提交答案之后,这里将显示提交结果~