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