Diberi pembolehubah integer Nombor sebagai input. Mari kita pertimbangkan tatasusunan yang mengandungi unsur dalam julat 1 hingga Nombor Susunan unsur boleh sewenang-wenangnya. Jika kita melakukan operasi Nombor-1 pada tatasusunan, operasinya adalah seperti berikut:
Kami memilih dua elemen A dan B daripada tatasusunan
Keluarkan A dan B daripada tatasusunan
Gantikan A dan B Jumlah kuasa dua ditambah pada tatasusunan
Akhirnya kita mendapat nilai integer tunggal matlamatnya adalah untuk mencari nilai maksimum yang mungkin untuk elemen itu.
Untuk memaksimumkan hasil akhir, kita perlu memilih A dan B untuk menjadikannya sebesar mungkin.
Untuk mencari A dan B terbesar, kami akan menggunakan baris gilir keutamaan untuk menyimpan nilai elemen di dalamnya.
Baris gilir keutamaan menyimpan elemen dalam susunan menurun.
Elemen paling atas mempunyai nilai terbesar, dan seterusnya. Jadi selepas muncul kedua-dua elemen, kami akan menolak petak mereka ke dalam baris gilir sekali lagi.
Akan pop dan tolak Nombor-1 kali untuk mendapatkan hasil yang diinginkan.
Input - Number = 2
Output - Unsur tunggal selepas pengurangan array: 5
planation - Anggaplah bahawa unsur-unsur dalam array adalah [1 2]
selepas memasukkan masuk ke dalam baris gilir keutamaan : 2 1
A=5, B=4 : A2+B2=1+4=5
Elemen terakhir: 5
Input
- Nombor=5Output - Elemen tunggal selepas pengurangan tatasusunan: 5
Penjelasan- Andaikan bahawa elemen dalam tatasusunan ialah [5 1 2 4 3]
Selepas dimasukkan ke dalam baris gilir keutamaan: 5 4 3 2 1
A, B=4: A 2+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=285612 : . Pop dua elemen terbesar dan tolak jumlah petak mereka kembali ke dalam baris gilir sehingga hanya tinggal satu nilai.
Dapatkan nombor pembolehubah input. Tetapkan jenis data hasil kepada integer panjang panjang - lli#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
Atas ialah kandungan terperinci Kurangkan tatasusunan kepada integer menggunakan operasi yang diberikan, dilaksanakan dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!