首页 > 后端开发 > C++ > 使用C++编写,找出所有元素都大于X的段的数量

使用C++编写,找出所有元素都大于X的段的数量

王林
发布: 2023-09-10 09:29:13
转载
636 人浏览过

使用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 初始化变量state并开始处理给定的数组,当找到大于 X 的元素时,将状态更改为 1,并继续处理元素;当找到小于或等于 X 的数字时,将状态更改回 0,每次状态变为 1 并返回时,将 count 增加 1到 0。

示例

#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;
    // traverse the array
    for (int i = 0; i < n; i++){
        // checking whether element is greater than X
        if (a[i] > X){
           state = 1;
        }
        else{
           // if flag is true
           if (state)
               count += 1;
            state = 0;
        }
    }
    // checking for the last segment
    if (state)
        count += 1;
    cout << "Number of segments where all elements are greater than X: " << count;
    return 0;
}
登录后复制

输出

Number of segments where all elements are greater than X: 4
登录后复制

上述程序说明

在上面的程序中,我们使用状态作为开关,当找到大于 X 的数字时将其设置为 1,当找到大于 X 的数字时将其设置为 0找到小于或等于 X 的数字,每次状态变为 1 并返回到 0 时,我们将计数加 1。最后,打印存储在计数中的结果。

结论 h2>

在本文中,我们通过应用每当找到段时将状态设置为 1 和 0 的方法来解决查找所有元素都大于 X 的段数的问题。我们可以用任何其他编程语言(例如 C、Java、Python 等)编写此程序。

以上是使用C++编写,找出所有元素都大于X的段的数量的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板