Rumah > Artikel > pembangunan bahagian belakang > Minimumkan hasil darab nombor terbesar dalam dua tatasusunan menggunakan swap
Manipulasi struktur data kini merupakan aspek penting dalam pembangunan penyelesaian yang berjaya dalam pengaturcaraan dan pengkomputeran moden. Ini disebabkan oleh peningkatan kerumitan yang dibentangkan oleh struktur ini dari semasa ke semasa. Contohnya ialah menjalankan operasi swap untuk meminimumkan jumlah nombor terbesar yang terkandung dalam dua tatasusunan, sekali gus mengurangkan nilai keseluruhannya. Dalam artikel ini, kami membincangkan dua cara untuk menyelesaikan tugasan ini menggunakan C++, sambil mengakui kelebihan dan kekurangan setiap pendekatan berdasarkan perspektif yang berbeza.
Untuk memahami kaedah dan kod dalam bahasa pengaturcaraan C++ dengan berkesan, kita perlu mempunyai pemahaman yang kukuh tentang sintaks asas. Ini bermakna melihat dengan lebih dekat komponen yang berkaitan dengan topik yang sedang dibincangkan.
Arrays: int arrayName[size]; Sorting: sort(arrayName, arrayName + size); Swap: swap(arrayName1[index], arrayName2[index]); Function Declaration: int functionName(type variableName);
Salah satu cara untuk mengurangkan hasil darab nombor terbesar dalam dua tatasusunan ialah menggunakan algoritma biasa untuk menukar elemennya. Untuk menggambarkan pendekatan ini, pertimbangkan contoh berikut -
Menerima atau memulakan dua tatasusunan.
Isih dua tatasusunan.
Cari elemen terbesar daripada setiap tatasusunan.
Jika elemen terbesar dalam tatasusunan pertama lebih penting daripada elemen terbesar dalam tatasusunan kedua, tukar.
Ulang langkah 3 dan 4 sehingga kita tidak lagi dapat meminimumkan produk.
Sekarang, mari kita bincangkan dua kaedah berbeza −
Kaedah pertama melibatkan penggunaan fungsi isihan dan swap terbina dalam dalam C++.
Mulakan atau masukkan dua tatasusunan.
Menggunakan fungsi sort() ialah alat yang berguna untuk mengisih kandungan tatasusunan dalam tertib menaik.
Cari elemen terbesar (elemen terakhir selepas mengisih) dalam dua tatasusunan.
Jika elemen terbesar dalam tatasusunan pertama lebih besar daripada elemen terbesar dalam tatasusunan kedua, gunakan fungsi swap() untuk menukar elemen.
Teruskan proses ini sehingga produk tidak dapat diminimumkan lagi.
#include<bits/stdc++.h> using namespace std; void minimizeProduct(int a[], int b[], int n) { sort(a, a + n); sort(b, b + n); for (int i = n - 1; i >= 0; --i) { if (a[i] > b[i]) swap(a[i], b[i]); else break; } cout << "Product of maximums: " << a[n - 1] * b[n - 1] << endl; } int main() { int a[] = {5, 7, 9, 3, 6}; int b[] = {1, 2, 6, 8, 0}; int n = sizeof(a)/sizeof(a[0]); minimizeProduct(a, b, n); return 0; }
Product of maximums: 72Terjemahan bahasa Cina bagi
Kaedah ini menggunakan arahan #include untuk menambah perpustakaan sebelum melaksanakan tugas. Menentukan ruang nama std pada permulaan memudahkan panggilan fungsi perpustakaan standard dan mengelakkan pernyataan yang panjang. Masukkan fungsi minimizeProduct, yang merangkumi dua tatasusunan input dan saiznya sebagai parameter.
Melanjutkan, ia mengisih tatasusunan ini dalam tertib menaik menggunakan kaedah sort() terbina dalam dan kemudian memulakan gelung for membandingkan elemen terbesar dalam tatasusunan pertama dan kedua.
Jika elemen terbesar dalam tatasusunan pertama lebih besar daripada tatasusunan kedua, tukar elemen tersebut untuk mendekati penyelesaian. Cetak produk menggunakan elemen maksimum yang baru ditukar. Fungsi terbina dalam seperti sort() dan swap() membantu menyelesaikannya tanpa masalah. Memanggil minimizeProduct dalam main() mengembalikan 0 untuk menunjukkan kejayaan.
Teknik ini boleh membawa faedah dalam situasi di mana fungsi terbenam tidak dapat dilakukan. Daripada menggunakan fungsi pengisihan dan pertukaran yang telah ditetapkan, kami mencipta variasi tersuai kami.
Mulakan atau masukkan dua tatasusunan.
Laksanakan fungsi pengisihan untuk mengisih dua tatasusunan dalam tertib menaik.
Cari elemen terbesar (elemen terakhir selepas mengisih) dalam dua tatasusunan.
Jika elemen terbesar dalam tatasusunan pertama lebih besar daripada elemen terbesar dalam tatasusunan kedua, gunakan fungsi swap tersuai untuk menukar elemen.
Ulang sehingga anda tidak dapat mengurangkan produk lagi.
#include<iostream> using namespace std; void sortArray(int arr[], int n) { for(int i = 0; i < n; ++i) { for(int j = i+1; j < n; ++j) { if(arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } void minimizeProduct(int a[], int b[], int n) { sortArray(a, n); sortArray(b, n); for (int i = n - 1; i >= 0; --i) { if (a[i] > b[i]) { int temp = a[i]; a[i] = b[i]; b[i] = temp; } else { break; } } cout << "Product of maximums: " << a[n - 1] * b[n - 1] << endl; } int main() { int a[] = {5, 7, 9, 3, 6}; int b[] = {1, 2, 6, 8, 0}; int n = sizeof(a)/sizeof(a[0]); minimizeProduct(a, b, n); return 0; }
Product of maximums: 72Terjemahan bahasa Cina bagi
Dalam pendekatan lain, kami meninggalkan penggunaan fungsi terbina dalam dan sebaliknya melaksanakan operasi pengisihan dan pertukaran secara manual. Kami mula-mula menulis fungsi baharu yang dipanggil 'sortArray' yang menggunakan bersarang untuk gelung untuk membandingkan dan menukar elemen dalam susunan yang dikehendaki apabila diberikan tatasusunan sebagai input. Dalam 'minimizeProduct' kedua-dua tatasusunan yang diberikan diisih secara sama sebelum memulakan lelaran dan kemudian kami mula melelaran dari hujung kanan dan menukar elemen yang sepadan apabila diperlukan - hanya pada mana-mana peringkat lelaran, dalam tatasusunan pertama Unsur-unsur ditukar sahaja jika mereka lebih besar dalam arah lajur daripada elemen dalam tatasusunan kedua, akhirnya, hasil daripada nilai maksimum diperoleh melalui proses ini dan dicetak ke konsol output sebagai hasilnya. Dalam 'main()', operasi 'minimize Product' ini digunakan dengan menghantar nilai pratetap melalui dua tatasusunan sedia ada.
Nilai integer maksimum dalam dua tatasusunan yang ditentukan boleh dikurangkan dengan ketara dengan menggunakan program C++ mengikut kaedah yang diperincikan di sini. Pengurangan ini dicapai melalui teknik pertukaran elemen mahir. Selain itu, pendekatan ini membolehkan pemahaman yang lebih mendalam tentang pelbagai strategi untuk manipulasi tatasusunan --- ia menyerlahkan cara fungsi diperibadikan saling melengkapi apabila digunakan bersama dengan pilihan pra-bina. Adalah penting untuk diingat bahawa menentukan pendekatan yang terbaik bergantung terutamanya pada kekangan dan potensi pengiraan keseluruhan bagi setiap masalah. Berdasarkan pertimbangan ini, adalah penting untuk tidak menyerah kepada kekecewaan dalam usaha anda untuk meningkatkan kemahiran pengekodan anda.
Atas ialah kandungan terperinci Minimumkan hasil darab nombor terbesar dalam dua tatasusunan menggunakan swap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!