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

C++の同じ配列内のすべての要素のフロア


この問題では、整数要素の配列arr[]が与えられます。私たちのタスクは、同じ配列内のすべての要素の床を見つけるプログラムを作成することです。要素の床が存在する場合は床を印刷し、そうでない場合は-1を印刷します。

配列内の要素のフロア 配列内の要素以下の最も近い要素です。

問題を理解するために例を見てみましょう

Input: arr[] = {3, 1, 5 ,7, 8, 2}
Output: 2 -1 3 5 7 1

ソリューションアプローチ

この問題を解決するためのアプローチは、ネストされたループを使用することです。 1つは配列の各要素をループし、内側の要素は配列内の要素のフロアを見つけるためにループします。

この問題を解決する別のアプローチは、ソートされた配列を格納するために追加の配列を使用することです。次に、その元の配列をループし、バイナリ検索アルゴリズムを使用して、並べ替えられた配列内の要素のフロアを見つけます。

ソリューションの動作を説明するプログラム

#include <bits/stdc++.h>
using namespace std;

void printFloorEle(int arr[], int n){
   vector<int> sortedArr(arr, arr + n);
   sort(sortedArr.begin(), sortedArr.end());
   for (int i = 0; i < n; i++) {
      if (arr[i] == sortedArr[0]) {
         if (arr[i] == sortedArr[1])
            cout<<arr[i];
         else
            cout<<-1;
         cout<<"\t";
         continue;
      }
      auto iterator = lower_bound(sortedArr.begin(),sortedArr.end(), arr[i]);
      if (iterator != sortedArr.end() && *(iterator + 1) == arr[i])
         cout<<arr[i]<<"\t";
      else
         cout<<*(iterator - 1)<<"\t";
   }
}
int main(){
   int arr[] = { 3, 1, 5 ,7, 8, 2 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The Floor of every element of the given array is ";
   printFloorEle(arr, n);
   return 0;
}

出力

The Floor of every element of the given array is 2 -1 3 5 7
1

  1. STLに配列を実装するC++プログラム

    配列と擬似コードに対するさまざまな操作: Begin In main(),    While TRUE do       Prints some choices.       Take input of choice.       Start the switch case          When case is 1             Print the size o

  2. 配列の最大要素を見つけるためのC++プログラム

    配列には複数の要素が含まれており、配列内の最大の要素は他の要素よりも大きい要素です。 たとえば。 5 1 7 2 4 上記の配列では、7が最大の要素であり、インデックス2にあります。 配列の最大の要素を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {    int a[] = {4, 9, 1, 3, 8};    int largest, i, pos;    largest = a[0