首頁 >後端開發 >C++ >使用C++編寫,找出所有元素都大於X的段的數量

使用C++編寫,找出所有元素都大於X的段的數量

王林
王林轉載
2023-09-10 09:29:13632瀏覽

使用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刪除