C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で厳密に減少するサブ配列の数を見つけます


配列Aがあるとします。そして、長さが1より大きい厳密に減少するサブ配列の総数を見つける必要があります。したがって、A =[100、3、1、15]の場合。したがって、減少するシーケンスは[100、3]、[100、3、1]、[15]です。したがって、3つのサブ配列が見つかると、出力は3になります。

アイデアは、len lのサブ配列を見つけて、結果にl(l – 1)/2を追加することです。

#include<iostream>
using namespace std;
int countSubarrays(int array[], int n) {
   int count = 0;
   int l = 1;
   for (int i = 0; i < n - 1; ++i) {
      if (array[i + 1] < array[i])
         l++;
      else {
         count += (((l - 1) * l) / 2);
         l = 1;
      }
   }
   if (l > 1)
   count += (((l - 1) * l) / 2);
   return count;
}
int main() {
   int A[] = { 100, 3, 1, 13, 8};
   int n = sizeof(A) / sizeof(A[0]);
   cout << "Number of decreasing subarrys: " << countSubarrays(A, n);
}

出力

Number of decreasing subarrys: 4

  1. C++で数値を除算する数値の桁数を検索します

    番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std;    int countDivDigit(int num) {    int c

  2. C++のRotatedSorted配列でRotationCountを検索します

    回転してソートされた配列である配列があるとします。配列をソートするために必要な回転数を見つける必要があります。 (右から左への回転を検討します。) 配列が{15、17、1、2、6、11}のようであるとすると、配列を2回回転させて並べ替える必要があります。最終的な注文は{1、2、6、11、15、17}になります。ここでの出力は2です。 ロジックは単純です。気づいたら、回転数が最小要素のインデックスの値と同じであることがわかります。したがって、最小の要素を取得すると、そのインデックスが結果になります。 例 #include <iostream> using namespace st