最大化连续踏步数,以在屋顶上获得海拔高度的增加
本文旨在确定一个人可以连续采取的最大步数,前提是相邻建筑物的高度,以便在从一个建筑物的屋顶移动到相邻建筑物的屋顶时获得海拔高度的增加。也就是说,依次提供了每个建筑物的高度。您可以从一条街区的一个建筑物的屋顶走到下一个建筑物的屋顶。您必须确定在每次踏步都获得海拔高度增加的情况下,您实际上可以连续采取多少步。
问题陈述
最大化可以在屋顶上连续向前踏出的步数,以获得海拔高度的增加。
方法
在给定的整数数组中,即所有建筑物高度按顺序给出的数组中,我们检查第一个元素是否小于第二个元素。更清楚地说,第一个建筑物的高度是否小于第二个建筑物或相邻建筑物的高度。如果第一个元素或第一个建筑物的高度小于第二个元素或第二个建筑物的高度,则我们踏出 1 步。如果第一个元素或第一个建筑物的高度不小于第二个元素或第二个建筑物的高度,则我们忽略它。
同样,每个建筑物的高度都与它旁边下一个建筑物的高度进行比较。
也就是说,给定数组中的每个元素都与该数组中紧邻的下一个元素的值进行检查。如果所考虑的元素小于下一个元素,则我们计算步数。否则,如果所考虑的元素不小于下一个元素,则我们忽略它。
算法
解决最大化可以在屋顶上连续向前踏出的步数以获得海拔高度增加的问题的算法如下所示。
步骤 1:从计数 0 开始。
步骤 2:将最大值设置为 0
步骤 3:如果 a[i] > a[i-1],则计数加 1
否则,maximum = max (maximum, count),并将计数设置为零。
步骤 4:最后,返回最大值。
步骤 5:停止
示例输入输出
输入
Integer array, a {2,4,6,8,10}
输出
4
解释
2$\mathrm{\rightarrow}$4 1 步
4$\mathrm{\rightarrow}$6 1 步
6$\mathrm{\rightarrow}$8 1 步
8$\mathrm{\rightarrow}$10 1 步
总步数 = 4
也就是说,从 2$\mathrm{\rightarrow}$4,1 步加上从 4$\mathrm{\rightarrow}$6,1 步加上从 6$\mathrm{\rightarrow}$8,1 步和 8$\mathrm{\rightarrow}$10 1 步。所以总共 4 步。
输入
Integer array, a {2,4,3,8}
输出
2
解释
2$\mathrm{\rightarrow}$4 1 步
4$\mathrm{\rightarrow}$3 未计算,因为它下降了
3$\mathrm{\rightarrow}$8 1 步
总步数 = 1
也就是说,从 2$\mathrm{\rightarrow}$4,1 步或 3$\mathrm{\rightarrow}$8 1 步。
输入
Integer array, a {2,4,4,3}
输出
1
解释
2$\mathrm{\rightarrow}$4 1 步
4$\mathrm{\rightarrow}$4 未计算,因为它没有增加
4$\mathrm{\rightarrow}$3 未计算,因为它下降了
总步数 = 1
也就是说,从 2$\mathrm{\rightarrow;}$4,1 步。
下面给出 C 程序,用于查找可以在屋顶上连续向前踏出的最大步数,以获得海拔高度的增加。
示例
#include <stdio.h> #include<math.h> int consecutive_steps(int a[], int l){ int count = 0; int maximum= 0; #define max for (int i = 1; i < l; i++) { // count the number of consecutive if (a[i] > a[i - 1]) count++; else { maximum = max(maximum, count); count = 0; } } return max(maximum, count); } int main() { int a[] = { 2, 4, 6, 8, 10}; int l = sizeof(a) / sizeof(a[0]); printf("%d",consecutive_steps (a, l)); }
输出
4
结论
同样,我们可以通过输入数组值来找到可以在屋顶上连续向前踏出的最大步数,以获得海拔高度的增加。
本文解决了获得可以在屋顶上连续向前踏出的最大步数以获得海拔高度增加的挑战。这里提供了 C 编程代码,用于查找可以在屋顶上连续向前踏出的最大步数,以获得输入数组值的增量高度。