首頁 > 後端開發 > C++ > 主體

使用給定的操作將數組縮減為一個整數,使用C++實現

WBOY
發布: 2023-09-05 09:25:05
轉載
676 人瀏覽過

使用給定的操作將數組縮減為一個整數,使用C++實現

給定一個整數變數Number作為輸入。讓我們考慮一個包含範圍在1到Number之間的元素的數組,元素的順序可以是任意的。如果我們在陣列上執行Number-1次操作,操作如下:

  • 我們從陣列中選擇兩個元素A和B

  • ##從數組中移除A和B

  • 將A和B的平方和加到數組中

最終我們會得到一個單獨的整數值;目標是找到該元素的最大可能值。

使用優先隊列

  • 為了最大化最終結果,我們需要選擇A和B使它們盡可能大。

  • 為了找到最大的A和B,我們將使用一個優先權佇列來儲存其中的元素值。

  • 優先佇列以降序儲存元素。

  • 最頂部的元素具有最大的值,以此類推。因此,在彈出兩個元素後,我們將再次將它們的平方推入隊列。

  • 將彈出並推入Number-1次以獲得所需的結果。

範例

輸入 - Number=2

輸出 - 陣列縮減後的單一元素:5

解釋 - 假設陣列中的元素為[ 1 2]

插入優先隊列後:2 1

##A=5, B =4 : A

2

B2=1 4=5#最後的元素:5

輸入 

- Number=5

#輸出 

- 陣列縮減後的單一元素:5

#解釋 

- 假設陣列中的元素為[ 5 1 2 4 3]插入優先佇列後:5 4 3 2 1

A=5, B=4 : A

2

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

2

B2=1681 9=1690 : 1690 2 1A=1690, B=2 : A

2

B2=1681 4=2856104 : 2856104 1A=2856104 , B=1 : A

2

B# 2=1187163712 1=1187163713 : 1187163713最後的元素:1187163713

#下面程式中所使用的方法如下

##在這個方法中,我們將優先優先考慮在這個方法中,我們將優先考慮隊列設定為按降序儲存數組的元素。彈出兩個最大的元素並將它們的平方和推回隊列,直到只剩下一個值。

取得輸入變數Number。
  • 將結果的資料型別設為long long整數- lli
  • 函數reduceArray(int Num)接受輸入的數字並傳回使用上述操作計算出的最大單一整數。
  • 使用一個優先隊列pQueue。
  • 使用while迴圈將數字1到N填入pQueue。
  • 當i
  • 現在pQueue中以降序儲存整數1到N,大小為N 。

  • 使用while循環遍歷pQueue,直到其大小>=1。
  • 將最大值設為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中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板