Susun semula tatasusunan untuk memaksimumkan i*arr, menggunakan C++

WBOY
Lepaskan: 2023-08-30 15:13:04
ke hadapan
673 orang telah melayarinya

Susun semula tatasusunan untuk memaksimumkan i*arr, menggunakan C++

Dalam artikel ini, kita akan membincangkan masalah menyusun semula susunan n nombor yang diberikan. Pada asasnya, kita perlu memilih elemen daripada tatasusunan. Untuk memilih setiap elemen, kami mendapat beberapa mata yang akan dinilai oleh nilai elemen semasa * bilangan elemen yang dipilih sebelum elemen semasa. Anda harus memilih elemen untuk mendapatkan markah tertinggi. Contohnya -

Input : arr[ ] = { 3, 1, 5, 6, 3 } If we select the elements in the way it is given, our points will be = 3 * 0 + 1 * 1 + 5 * 2 + 6 * 3 + 3 * 4 = 41 To maximize the points we have to select the elements in order { 1, 3, 3, 5, 6 } = 1 * 0 + 3 * 1 + 3 * 2 + 5 * 3 + 6 * 4 = 48(maximum) Output : 48 Input : arr[ ] = { 2, 4, 7, 1, 8 } Output : 63
Salin selepas log masuk

Kaedah untuk mencari penyelesaian

Melihat contoh ini, kita perlu mendapatkan titik maksimum, kita perlu memilih elemen dari kecil ke besar. Penyelesaian ditemui dengan,

  • menyusun tatasusunan yang diberikan dalam tertib menaik.
  • Mula memilih elemen dari indeks 0 hingga akhir.
  • Kira markah yang diperolehi dengan memilih setiap elemen.

Contoh

#include  #include  using namespace std; int main () { int arr[] = { 2, 4, 7, 1, 8 }; int n = sizeof (arr) / sizeof (arr[0]); // sorting the array sort (arr, arr + n); int points = 0; // traverse the array and calculate the points for (int i = 0; i < n; i++) { points += arr[i] * i; } cout << "Maximum points: " << points; return 0; }
Salin selepas log masuk

Output

Maximum points: 63
Salin selepas log masuk

Penerangan kod di atas

Kod C++ ini mudah difahami. Mula-mula kita mengisih tatasusunan dan kemudian menggunakan gelung for untuk mengulang tatasusunan dan mengira skor yang diperoleh dengan memilih setiap elemen dari awal hingga akhir.

Kesimpulan

Dalam artikel ini, kami membincangkan masalah memilih elemen dalam tatasusunan untuk mendapatkan titik maksimum, di mana titik dikira oleh i * arr[i]. Kami mengamalkan pendekatan tamak untuk menyelesaikan masalah ini dan memperoleh markah maksimum. Juga membincangkan kod C++ untuk melakukan perkara yang sama, kita boleh menulis kod ini dalam mana-mana bahasa lain seperti C, java, Python dll. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Susun semula tatasusunan untuk memaksimumkan i*arr, menggunakan C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!