給定一個整數變數Number作為輸入。讓我們考慮一個包含範圍在1到Number之間的元素的數組,元素的順序可以是任意的。如果我們在陣列上執行Number-1次操作,操作如下:
我們從陣列中選擇兩個元素A和B
輸入 - Number=2
輸出 - 陣列縮減後的單一元素:5
解釋 - 假設陣列中的元素為[ 1 2]
插入優先隊列後:2 1##A=5, B =4 : A
2B2=1 4=5#最後的元素:5
輸入- Number=5
#輸出- 陣列縮減後的單一元素:5
#解釋- 假設陣列中的元素為[ 5 1 2 4 3]插入優先佇列後:5 4 3 2 1
A=5, B=4 : A
2B2=25 16=41 : 41 3 2 1A=41, B=3 : A
2B2=1681 9=1690 : 1690 2 1A=1690, B=2 : A
2B2=1681 4=2856104 : 2856104 1A=2856104 , B=1 : A
2B# 2=1187163712 1=1187163713 : 1187163713最後的元素:1187163713
#下面程式中所使用的方法如下
##在這個方法中,我們將優先優先考慮在這個方法中,我們將優先考慮隊列設定為按降序儲存數組的元素。彈出兩個最大的元素並將它們的平方和推回隊列,直到只剩下一個值。 取得輸入變數Number。現在pQueue中以降序儲存整數1到N,大小為N 。
#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中文網其他相關文章!