C ++を使用して、すべての要素がXより大きいセグメントの数を見つけます
この記事では、特定のシーケンス内のセグメントまたはサブアレイの数を見つける必要があります。ここで、要素は特定の数Xよりも大きくなります。
重複するセグメントは1回だけカウントでき、2つの連続する要素またはセグメントを別々にカウントしないでください。だからここに与えられた問題の基本的な例があります-
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に変更し、要素の処理を続行し、X以下の数が見つかったときに状態を0に戻し、カウントを1ずつ増やします。状態が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に設定します。 1に戻り、0に戻ると、カウントが1ずつ増加します。最後に、カウントに保存された結果を出力します。
結論
この記事では、セグメントが見つかるたびに状態を1と0に設定するアプローチを適用することにより、すべての要素がXより大きいセグメントの数を見つける問題を解決します。このプログラムは、C、Java、Pythonなどの他のプログラミング言語で作成できます。
-
C++を使用して文字列の部分文字列の数を見つける
この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &
-
C++を使用して停止ステーションの数を見つける
ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります