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

C++で最大の幾何平均を持つサブセットを検索します


ここに、いくつかの要素を含む配列Aがあります。私たちのタスクは、幾何平均が最大になるサブセットを見つけることです。 A =[1、5、7、2、0]とすると、幾何平均が最大のサブセットは[5、7]になります。

これを解決するために、1つのトリックに従います。最大の2つの要素が最大の幾何平均を形成し、最大の2つの要素がサブセットとして返されることがわかっているため、平均は見つかりません。

#include <iostream>
using namespace std;
void largestGeoMeanSubset(int arr[], int n) {
   if (n < 2) {
      cout << "Very few number of elements";
      return;
   }
   int max = INT_MIN, second_max = INT_MIN;
   for (int i = 0; i < n ; i ++) {
      if (arr[i] > max) {
         second_max = max;
         max = arr[i];
      }else if (arr[i] > second_max)
         second_max = arr[i];
   }
   cout << second_max << ", "<< max;
}
int main() {
   int arr[] = {1, 5, 7, 2, 0};
   int n = sizeof(arr)/sizeof(arr[0]);
   largestGeoMeanSubset(arr, n);
}

出力

5, 7

  1. C++で許可されている重複を含む配列内の固定小数点を検索します

    ここでは、特定の配列で固定小数点を見つける方法を説明します。配列では、値がそのインデックスと同じである場合、1つの要素は固定小数点として示されます。このプログラムは、存在する場合は値を返し、そうでない場合は-1を返します。配列は負の数も保持できます。そして、データ要素がソートされます。ここでは、重複する要素を配列に含めることができます。 ここでは、二分探索アプローチを使用して、O(log n)時間でこの問題を解決します。ただし、いくつかの変更が必要です。通常の二分探索を使用すると、重複する要素に対して失敗する可能性があります。左をチェックするには、min(mid – 1、midValue)か

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

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