ホームページ >バックエンド開発 >C++ >C++ で記述された、連続する要素のペアの積の合計が最小になるように配列を再配置します。

C++ で記述された、連続する要素のペアの積の合計が最小になるように配列を再配置します。

PHPz
PHPz転載
2023-08-26 10:57:061086ブラウズ

C++ で記述された、連続する要素のペアの積の合計が最小になるように配列を再配置します。

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)
  • 関数内 Rearrange_min_sum(arr, size)

    • 変数 (たとえば「even」) を作成し、整数変数を格納する型ベクトルの「奇数」型。

    • 変数を temp および total として宣言し、0 で初期化します。

    • Start i が size 未満になるまで FOR を i から 0 までループします。ループ内で、i が size/2 未満であることを確認してから、arr[i] を奇数ベクトルにプッシュし、ELSE して arr[i] を偶数ベクトルにプッシュします。

    • even.begin()、even.end()、およびgreater()を渡してsortメソッドを呼び出します。
    • iから0までループFORを開始します。ループ内で、arr[temp ] を Even[j] に、arr[temp ] を od[j] に、total を total Even[j] * od[j]
    • に設定します。

    • 合計を返す
  • 結果を出力します。
  • #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 サイトの他の関連記事を参照してください。

    声明:
    この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。