C++で厳密に増加するサブ配列を数える
整数要素を含む配列が与えられ、タスクは最初に与えられた配列からサブ配列を計算し、次にサブ配列内の要素が昇順であるかどうかを確認することです。はいの場合、サブアレイを検討します。そうでない場合は破棄されます。
ここでのアプローチは、0番目と1番目の位置の要素が昇順でない場合、サブアレイのそれ以上のチェックを停止することです。
例-C++の場合
入力: int a [] ={1、7、5}
出力: 厳密に増加するサブアレイの数は1です
説明- 可能なサブ配列には、{1,7,5}、{1,7}、{7,5}が含まれます。ここで、{1,7}は、厳密に昇順の唯一の配列です。
入力: int a [] ={1、2、7、10}
出力: 厳密に増加するサブアレイの数は6です
説明 - 可能なサブ配列には、{1、2、7}、{1、2、7}、{1、2、7、10}、{2、7}、{2、7、10}、{7、10}などがあります。厳密に昇順です。
以下のプログラムで使用されているアプローチは次のとおりです
- 配列が宣言され、要素が入力され、データがcountIncSubarrays(a、a.length)という名前の関数に、配列の長さとともに渡されて、さらに処理されます。
- 関数内でカウントフラグを初期化します。
- ループFORiを0から配列の長さまで開始します
- ループ内で、i+1から配列の長さまで別のLoopFORjを開始します
- ループ内で、a[j]がa[j-1]より大きいかどうかを確認し、カウントを増やします。
- それ以外の場合は、昇順チェックが失敗するとループが中断されます。
- メイン関数では、結果が関数呼び出しから取得され、出力として出力されます。
例
import java.util.*; class testqwe { static int MAX = 4; static int a[] = new int[MAX]; static Scanner scan = new Scanner(System.in); static int countIncSubarrays(int a[], int n) { int count = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (a[j] > a[j - 1]) count++; else break; } } return count; } public static void main(String[] args) { for (int i = 0; i < a.length; i++) { a[i] = scan.nextInt(); //1,2,7,0 } int result = countIncSubarrays(a, a.length); System.out.println("Count of strictly increasing subarrays is " + result); } }
上記のコードを実行すると、次の出力が生成されます-
出力
Count of strictly increasing subarrays is 6
-
C++の平面内の平行四辺形の数
平行四辺形を形成する点を含む平面が与えられます。タスクは、与えられた点を使用して形成できる平行四辺形の数を計算することです。平行四辺形では、四辺形の反対側は平行であるため、反対の角度は等しくなります。 入力 − int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2} Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10} 出力 −平面内の平行四辺形の数− 3 説明 −(x、y)点が与えられ、これらの点を使用して、図に示すように3つの平行四辺形のカウントを形成できます。 入力 − a[] = {0, 3, 1, 4, 1, 5} b
-
配列内の反転をカウントするC++プログラム
カウント反転とは、配列をソートするために必要なスイッチの数を意味します。配列がソートされている場合、反転カウント=0。反転カウント=配列が逆の順序でソートされた場合の最大値。 配列内の反転をカウントするC++プログラムを開発しましょう。 アルゴリズム Begin Function CountInversionArray has arguments a[], n = number of elements. initialize counter c := 0 for i in range 0 to n-1, do &n