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

C++でX以上の値を持つX要素が正確に存在するように要素をカウントします


整数の配列が与えられます。目標は、次の条件を満たす配列内の要素の数を見つけることです-

各要素について、配列に存在するそれ以上の数の数は、それと正確に等しい必要があります。要素自体を除外します。要素がXの場合、配列にはX以上の正確なX番号があります(要素を除く)。

入力

Arr[]= { 0,1,2,3,4,9,8 }

出力

Elements exactly greater than equal to itself : 1

説明 −要素と数字>=それに-

Arr[0]: 6 elements are >= 0 , 6!=0 count=0
Arr[1]: 5 elements are >= 1 , 5!=1 count=0
Arr[2]: 4 elements are >= 2 , 4!=2 count=0
Arr[3]: 3 elements are >= 3 , 3==3 count=1
Arr[4]: 2 elements are >= 4 , 2!=4 count=1
Arr[4]: 0 elements are >= 9 , 0!=9 count=1
Arr[6]: 1 element is >= 8 , 1!=8 count=1

3は、正確に3つの要素がそれに> =(4,8,9)

であるような唯一の要素です。

入力

Arr[]= { 1,1,1,1,1 }

出力

Elements exactly greater than equal to itself : 0

説明 −すべての要素が等しく、カウント!=1

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数配列Arr[]は、整数を格納するために使用されます。

  • 整数「n」は配列の長さを格納します。

  • 関数findcount(int arr []、int n)は、配列とそのサイズを入力として受け取り、前に説明したXのような数値のカウントを返します。

  • 可変カウントは、Xなどの数値のカウントを格納するために使用されます。

  • ans =0を初期化します。これにより、そのような数がカウントされます。

  • forループを使用して、最初の要素(index =0)から配列をトラバースします。

  • 開始要素からのforループトラバースの内側で、i!=jのようなarr[j]> =arr [j]がある場合は、カウントをインクリメントします。

  • jループの終了後、countをarr[i]と比較します。 count ==arr [i](正確にarr[i]要素が>=arr [i]の場合、回答「ans」をインクリメントします

  • 両方のforループが終了すると、「ans」に存在する結果が返されます。

#include <iostream>
#include <algorithm>
using namespace std;
int findcount(int arr[],int n){
   sort(arr,arr+n);
   int count=0;
   int ans=0;
   for(int i=0;i<n;i++){
      count=0;
      for(int j=0;j<n;j++){
         if(arr[j]>=arr[i] && i!=j)
            count++;
      }
      if(count==arr[i])
         ans++;
   }
   return ans;
}
int main(){
   int Arr[]= { 0,1,2,3,4,5,6 };
   int k=7;
   int n=sizeof(Arr)/sizeof(Arr[0]);
   std::cout<<"Elements exactly greater than equal to itself : "<<findcount(Arr,n);
   return 0;
}

出力

Elements exactly greater than equal to itself : 1

  1. C++でマンハッタン距離に等しい距離のパスをカウントします

    2D座標系上の2つの点を(x1、y1)および(x2、y2)として表す変数x1、x2、y1、y2が与えられます。目標は、これら2つのポイント間のマンハッタン距離に等しい距離を持つすべてのパスを見つけることです。 マンハッタン距離 マンハッタン2点(x1、y1)と(x2、y2)の間の距離は- MD =| x1 – x2 | + | y1 – y2 | A =| x1 –x2|を取りましょうおよびB=| y1 – y2 | マンハッタン距離がMDに等しいすべてのパスでは、エッジが(A + B)としてカウントされます。水平エッジとB垂直エッジ。したがって、2つのグループに分割された(A +

  2. C++で2つの要素が隣接しないような循環配列の最大合計

    この問題では、循環配列cirArr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように循環配列の最大合計を見つけるプログラムを作成することです。 問題の説明 循環配列の場合、隣接する要素を取得できないように、配列の要素の最大合計を見つける必要があります。つまり、代替要素を取得する必要があります。 循環アレイ は、配列の最後の要素が最初の要素に接続されている特殊なタイプの配列です。 問題を理解するために例を見てみましょう 入力 cirArr[] = {4, 1, 5, 3, 2} 出力 9 説明 最大合計循環サブシーケンスは[4、5、2]です。合計=9 ソリ