在本文中,我們需要找到給定序列中大於給定數字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。最後,列印儲存在計數中的結果。
在本文中,我們透過應用每當找到段時將狀態設為 1 和 0 的方法來解決查找所有元素都大於 X 的段數的問題。我們可以用任何其他程式語言(例如 C、Java、Python 等)編寫此程式。
以上是使用C++編寫,找出所有元素都大於X的段的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!