C++での最大積4倍の数を見つける
n個の要素を持つ1つの整数配列があるとします。配列内の4倍の最大積を見つける必要があります。したがって、配列が[3、5、20、6、10]のような場合、最終積は6000であり、4倍の要素は10、5、6、20
です。これを解決するには、次の手順に従います-
- 配列を昇順で並べ替えます
- xが最後の4つの要素の積、yが最初の4つの要素の積、zが最初の2つと次の2つの要素の積であると仮定します
- x、y、zの最大値を返します。
例
#include<iostream>
#include<algorithm>
using namespace std;
int maxQuadProduct(int arr[], int n) {
if (n < 4)
return -1;
sort(arr, arr + n);
int last_four = arr[n - 1] * arr[n - 2] * arr[n - 3] * arr[n - 4];
int first_four = arr[0] * arr[1] * arr[2] * arr[3];
int two_first_last = arr[0] * arr[1] * arr[n - 1] * arr[n - 2];
return max(last_four, max(first_four, two_first_last));
}
int main() {
int arr[] = { -10, -3, 5, 6, -20 };
int n = sizeof(arr) / sizeof(arr[0]);
int maximum_val = maxQuadProduct(arr, n);
if (maximum_val == -1)
cout << "No Quadruple Exists";
else
cout << "Maximum product is " << maximum_val;
} 出力
Maximum product is 6000
-
C ++を使用して、配列内の数値の頻度を見つけます。
配列があるとします。 n個の異なる要素があります。配列内の1つの要素の頻度を確認する必要があります。 A =[5、12、26、5、3、4、15、5、8、4]とすると、5の頻度を見つけようとすると、3になります。 これを解決するために、左から配列をスキャンします。要素が指定された数と同じである場合は、カウンターを増やします。それ以外の場合は、配列がなくなるまで次の要素に進みます。 例 #include<iostream> using namespace std; int countElementInArr(int arr[], int n, int e) { &nbs
-
グラフの最大カットを見つけるためのC++プログラム
このプログラムでは、グラフの最大カットを見つけるために、グラフのエッジ連結性を見つける必要があります。グラフのグラフのエッジ接続は、それがブリッジであることを意味し、グラフを削除すると切断されます。接続されたコンポーネントの数は、切断された無向グラフのブリッジを削除すると増加します。 関数と擬似コード Begin Function connections() is a recursive function to find out the connections: A) Mark the current node un visited. &nb