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

C++での配列値の三角形配列の最大高さ


問題の説明

配列が与えられた場合、(i + 1) th ごとの配列値から、形成できる三角形の最大の高さを見つける必要があります。 レベルには、前のレベルよりも合計が大きい要素が多く含まれています。

入力配列が{40、100、20、30}の場合、答えは2 as-

ピラミッドの最下層に100と20、上層に40または30を設定できます

アルゴリズム

私たちの解決策は、ピラミッドに可能な最大の高さhがある場合、(h *(h + 1))/2要素が配列に存在する必要があるという論理に基づいています

#include <bits/stdc++.h>
using namespace std;
int getMaximumHeight(int *arr, int n) {
   int result = 1;
   for (int i = 1; i <= n; ++i) {
      long long y = (i * (i + 1)) / 2;
      if (y < n) {
         result = i;
      } else {
         break;
      }
   }
   return result;
}
int main() {
   int arr[] = {40, 100, 20, 30};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Result = " << getMaximumHeight(arr, n) << endl;
   return 0;
}

出力

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

Result = 2

  1. C++で配列を反転します

    この記事では、C ++コーディングを使用して、配列を降順で反転する方法を紹介しています。この場合、ループ内で配列をトラバースすることにより、最高のインデックスが最低のインデックスにスワップされます。 例 #include <iostream> #include <algorithm> using namespace std; void reverseArray(int arr[], int n){    for (int low = 0, high = n - 1; low < high; low++, high--){   &nbs

  2. C++の配列で最大GCDのペアを検索します

    正の整数の配列があるとします。私たちのタスクは、GCD値が最大である配列から整数のペアを見つけることです。 A ={1、2、3、4、5}とすると、出力は2になります。ペア(2、4)にはGCD 2があり、他のGCD値は2未満です。 この問題を解決するために、各要素の除数の数を格納するためのカウント配列を維持します。除数を数えるプロセスには、O(sqrt(arr [i]))の時間がかかります。全体をトラバースした後、最後のインデックスから最初のインデックスまでカウント配列をトラバースできます。要素が1より大きい値が見つかった場合、これは2つの要素の約数であり、最大GCDでもあることを意味します。