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

指定された配列の極値をカウントするC++コード


n個の要素を持つ配列Aがあるとします。この配列A[i]の一部の要素は、それがその隣接する両方よりも厳密に小さい場合にのみ、極小値と呼ばれます。また、それが隣接するものよりも厳密に大きい場合は、極大になります。 A[0]およびA[n-1]の場合、隣接するものが1つしかないため、最大値または最小値ではありません。与えられた配列内の極値の数を見つける必要があります。

したがって、入力がA =[1、5、2、5]の場合、A [1]の5は極大値であり、A [2]の2は極小値であるため、出力は2になります。

>

ステップ

これを解決するには、次の手順に従います-

sum := 0
n := size of A
for initialize i := 1, when i < n - 1, update (increase i by 1), do:
   if (A[i] < A[i - 1] and A[i] < A[i + 1]) or (A[i] > A[i + 1] and A[i] > A[i - 1]), then:
      (increase sum by 1)
   return sum

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
   int sum = 0;
   int n = A.size();
   for (int i = 1; i < n - 1; i++)
      if ((A[i] < A[i - 1] && A[i] < A[i + 1]) || (A[i] > A[i + 1] && A[i] > A[i - 1]))
         sum++;
   return sum;
}
int main(){
   vector<int> A = { 1, 5, 2, 5 };
   cout << solve(A) << endl;
}

入力

{ 1, 5, 2, 5 }

出力

2

  1. C++で指定された範囲の階乗数をカウントします

    変数が保持する整数値から始まり、たとえば開始から変数の終了までの範囲が与えられます。タスクは、指定された範囲で使用可能な階乗数の総数をカウントすることです。 階乗数とは 数値の階乗は、数値の桁を1で除算しながら、数値の桁を乗算することによって計算されます。これは、記号「!」で示されます。つまり、0!、1!、2!、3!、5!、...です。 、等。 0の階乗!と1!常に1です。 I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2       factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 *

  2. C++でソートされたバイナリ配列の1を数えます

    このチュートリアルでは、ソートされたバイナリ配列で1を見つけるプログラムについて説明します。 このために、1と0のみを含む配列が提供されます。私たちのタスクは、配列に存在する1の数を数えることです。 例 #include <bits/stdc++.h> using namespace std; //returning the count of 1 int countOnes(bool arr[], int low, int high){    if (high >= low){       int mid = low + (