ホームページ  >  記事  >  バックエンド開発  >  C++ で実装された、指定された演算を使用して配列を整数に縮小します。

C++ で実装された、指定された演算を使用して配列を整数に縮小します。

WBOY
WBOY転載
2023-09-05 09:25:05671ブラウズ

C++ で実装された、指定された演算を使用して配列を整数に縮小します。

整数変数 Number を入力として指定します。 1 から Number までの範囲の要素を含む配列を考えてみましょう。要素の順序は任意です。配列に対して Number-1 の演算を実行すると、演算は次のようになります。

  • #配列から 2 つの要素 A と B を選択します

  • from 配列から A と B を削除します。

  • A と B の 2 乗の合計を配列に追加します。

最終的には次のようになります。単一の整数値。目標は、その要素の可能な最大値を見つけることです。

優先キューの使用

  • 最終結果を最大化するには、A と B を選択してできるだけ大きくする必要があります。

  • 最大の A と B を見つけるために、優先キューを使用して要素値を格納します。

  • プライオリティ キューは要素を降順に格納します。

  • 最上位の要素が最大の値を持ち、以下同様となります。したがって、両方の要素をポップした後、それらの四角形を再度キューにプッシュします。

  • Number-1 を何度もポップして押して、望ましい結果を取得します。

入力 -数値=2

出力 -配列の後の単一要素は削減されます:5

説明 - 優先キューに挿入した後、配列内の要素が [1 2]

であると仮定します: 2 1

A=5、B =4 : A2 B2=1 4=5

最後の要素: 5

入力 -Number=5

出力 - 配列削減後の単一要素: 5

説明 - 配列内の要素が [5 であると仮定します。 1 2 4 3]

優先キューに挿入後: 5 4 3 2 1

A=5, B=4 : A2 B2=25 16=41 : 41 3 2 1

A=41、B=3 : A2 B2=1681 9=1690 : 1690 2 1

A=1690、B=2 : A2 B2=1681 4=2856104 : 2856104 1

A=2856104、B=1 : A2 B 2=1187163712 1=1187163713 : 1187163713

最後の要素: 1187163713

次のプログラムで使用されるメソッドは次のとおりです

この方法では優先順位を付けます。 キューは配列の要素を降順に格納するように設定されています。最大の 2 つの要素をポップし、値が 1 つだけ残るまでそれらの二乗和をキューに戻します。

  • #入力変数 Number を取得します。

  • 結果のデータ型をlong long integerに設定します - lli

  • 関数reduceArray(int Num)は入力数値を受け取り、戻り値を返します。上記の操作によって計算された最大の単一整数を使用します。

  • 優先キュー pQueue を使用します。

  • while ループを使用して、1 から N までの数値を pQueue に入力します。

  • When i
  • これで、pQueue は整数 1 から N を降順でサイズ N で格納します。

  • while ループを使用して、サイズが 1 以上になるまで pQueue を走査します。

  • var1=pQueue.top() に最大値を設定してポップします。

  • 次の最大値を var2=pQueue.top() に設定してポップします。

  • var1 をその正方形に設定し、var2 をその正方形に設定します。

  • var1 var2 を pQueue に再度プッシュします。

  • while ループの最後で、先頭の要素を返します。

  • main 関数で結果を出力します。

#include <bits/stdc++.h>
using namespace std;
#define lli long long int
int reduceArray(int Num){
   priority_queue<lli> pQueue;
   int i=1;
   while(i<=Num){
      pQueue.push(i);
      i=i+1;
   }
   while (pQueue.size() > 1) {
      lli var1 = pQueue.top();
      pQueue.pop();
      lli var2 = pQueue.top();
      pQueue.pop();
      var1=var1*var1;
      var2=var2*var2;
      pQueue.push(var1+var2);
   }
   return pQueue.top();
}
int main(){
   int Number = 5;
   cout<<"Single element after array reduction: "<<reduceArray(Number);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Single element after array reduction: 1187163713

以上がC++ で実装された、指定された演算を使用して配列を整数に縮小します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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