arr[] と仮定して、任意のサイズの正の整数型の配列があります。ここでのタスクは、要素と隣接する要素を乗算し、結果の要素をすべて加算したときに最小の合計が返されるように配列を再配置することです。
入力 - int arr[] = {2, 5, 1, 7, 5, 0, 1, 0}
出力 - 合計が最小になるように配列を並べ替えます。つまり、連続する要素のペアの積は次のようになります。 7 0 5 0 5 1 2 1
説明 - サイズ 8 の整数配列があります。次に、配列、つまり 7 0 5 0 5 1 2 1 を再配置します。最小合計が返されたかどうか、つまり 7 * 0 5 * 0 5 * 1 2 * 1 = 0 0 5 2 = 7 が返されたかどうかを確認します。
入力 - int arr[] = {1, 3, 7, 2, 4, 3}
出力 - 配列を並べ替えます。合計、つまり連続する要素のペアの積を最小化すると、次のようになります。 7 1 4 2 3 3
説明 - サイズ 6 の整数配列があります。次に、配列、つまり 7 1 4 2 3 3 を再配置します。最小合計 (7 * 1 4 * 2 3 * 3 = 7 8 9 = 24) が返されるかどうかを確認します。
整数型の配列を入力し、配列のサイズを計算します。
C STL の sort メソッドを使用して配列を並べ替え、配列と配列のサイズを sort 関数に渡します。
整数変数を宣言し、それを呼び出し元関数の戻り値に設定します。
関数内 Rearrange_min_sum(arr, size)
変数 (たとえば「even」) を作成し、整数変数を格納する型ベクトルの「奇数」型。
変数を temp および total として宣言し、0 で初期化します。
Start i が size 未満になるまで FOR を i から 0 までループします。ループ内で、i が size/2 未満であることを確認してから、arr[i] を奇数ベクトルにプッシュし、ELSE して arr[i] を偶数ベクトルにプッシュします。
#include <bits/stdc++.h> using namespace std; int Rearrange_min_sum(int arr[], int size){ vector<int> even, odd; int temp = 0; int total = 0; for(int i = 0; i < size; i++){ if (i < size/2){ odd.push_back(arr[i]); } else{ even.push_back(arr[i]); } } sort(even.begin(), even.end(), greater<int>()); for(int j = 0; j < even.size(); j++){ arr[temp++] = even[j]; arr[temp++] = odd[j]; total += even[j] * odd[j]; } return total; } int main(){ int arr[] = { 2, 5, 1, 7, 5, 0, 1, 0}; int size = sizeof(arr)/sizeof(arr[0]); //sort an array sort(arr, arr + size); //call function int total = Rearrange_min_sum(arr, size); cout<<"Rearrangement of an array to minimize sum i.e. "<<total<<" of product of consecutive pair elements is: "; for(int i = 0; i < size; i++){ cout << arr[i] << " "; } return 0; }
Rearrangement of an array to minimize sum i.e. 7 of product of consecutive pair elements is: 7 0 5 0 5 1 2 1
以上がC++ で記述された、連続する要素のペアの積の合計が最小になるように配列を再配置します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。