使用 C++ 查找所有元素都大于 X 的段数
在本文中,我们必须找到给定序列中元素大于给定数量X的段或子数组的数量。
我们只能计算重叠段一次,两个连续的元素或段不应单独计算。所以这是给定问题的基本示例-
Input : arr[ ] = { 9, 6, 7, 11, 5, 7, 8, 10, 3}, X = 7 Output : 3 Explanation : { 9 }, { 11 } and { 8, 10 } are the segments greater than 7 Input : arr[ ] = { 9, 6, 12, 2, 11, 14, 8, 14 }, X = 8 Output : 4 Explanation : { 9 }, { 12 }, { 11, 14 } and { 14 } are the segments greater than 8
寻找解决方案的方法
天真的方法
在这个问题中,我们用0初始化一个变量状态并开始处理给定的数组,当发现大于X的元素时将状态更改为1,并继续处理元素并在数字小于或时将状态更改回0找到等于X并在每次状态变为1并返回到0时将计数增加1。
示例
#include <bits/stdc++.h> using namespace std; int main (){ int a[] = { 9, 6, 12, 2, 11, 14, 8, 14 }; int n = sizeof (a) / sizeof (a[0]); int X = 8; int state = 0; int count = 0; //遍历数组 for (int i = 0; i < n; i++){ //检查元素是否大于X if (a[i] > X){ state = 1; } else{ //如果标志为真 if (state) count += 1; state = 0; } } //检查最后一段 if (state) count += 1; cout << "所有元素都大于X的段数: " << count; return 0; }输出结果
所有元素都大于X的段数: 4
以上程序说明
在上面的程序中,我们使用状态作为开关,当找到大于X的数时将其设置为1,当找到小于或等于X的数时将其设置为0,并且对于每次状态变为1并返回0我们将计数增加1。最后,打印存储在计数中的结果。
结论
在本文中,我们通过应用将状态设置为1和0的方法来解决找到所有元素都大于X的段数的问题。我们可以用任何其他编程语言(如C、Java、Python等)编写此程序。