ในปัญหานี้ เราได้รับอาร์เรย์ arr[] งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลิตภัณฑ์สูงสุดสี่เท่า (ลำดับย่อยของขนาด 4) ในอาร์เรย์ใน C ++
คำอธิบายโค้ด − ในที่นี้ เราจำเป็นต้องหาสี่เท่า (ลำดับย่อยของขนาด 4) เพื่อให้ผลคูณขององค์ประกอบทั้งหมดมีค่าสูงสุด
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
arr[] ={4}4, -2, 5, -6, 8}
ผลลัพธ์
840
คำอธิบาย
สี่เท่า (-3, 5, -7, 8) กับผลิตภัณฑ์ 840
แนวทางการแก้ปัญหา
ปัญหาหนึ่งๆ สามารถมีได้หลายวิธี
วิธีแก้ปัญหาง่ายๆ วิธีหนึ่งคือการใช้วิธีตรงโดยการสำรวจอาร์เรย์ จากนั้นค้นหาสี่เท่าที่เป็นไปได้ทั้งหมดในอาร์เรย์ ค้นหาผลิตภัณฑ์ของตนแล้วเปรียบเทียบเพื่อหาจำนวนผลิตภัณฑ์สูงสุดสี่เท่า
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#includeใช้เนมสเปซ std;int max(int a, int b){ if(a> b) คืนค่า a; ส่งคืน b;}int findMaxProdQuad (int arr [], int n) { int maxProd =0; ผลิตภัณฑ์ int =1; สำหรับ (int i =0; i <=n - 4; i++) สำหรับ (int j =i + 1; j <=n - 3; j++) สำหรับ (int k =j + 1; k <=n - 2; k++) สำหรับ (int l =k + 1; l <=n - 1; l++) { prod =arr[i] * arr[j] * arr[k] * arr[l]; maxProd =สูงสุด (maxProd, แยง); ผลผลิต =1; } return maxProd;}int main(){ int arr[] ={4, -2, 5, -6, 8}; int n =sizeof(arr) / sizeof(arr[0]); cout<<"ผลคูณสูงสุดของสี่เท่าคือ "< ผลลัพธ์
ผลคูณสูงสุดของสี่เท่าคือ 480อีกวิธีหนึ่งในการค้นหาสี่เท่าที่มีผลิตภัณฑ์สูงสุดคือการหาองค์ประกอบสูงสุดสี่รายการของอาร์เรย์และองค์ประกอบขั้นต่ำสี่รายการของอาร์เรย์
สมมติว่า mx1, mx2, mx3, mx4 เป็นตัวเลขสูงสุดสี่ตัวแรก และ mn1, mn2, mn3, mn4 เป็นตัวเลขขั้นต่ำสี่ตัวแรกของอาร์เรย์ แล้วหาค่าของ
<ก่อน>1. mx1 * mx2 * mx3 * mx42 mn1 * mn2 * mn3 * mn43. mx1 * mx2 * mn1 * mn2
และคืนค่าสูงสุดของค่าผลิตภัณฑ์ทั้งสามนี้ ซึ่งจะทำให้ผลิตภัณฑ์สูงสุดสี่เท่า และพิจารณาทุกกรณี
โปรแกรมแสดงการใช้งานอัลกอริทึมของเรา
ตัวอย่าง
#includeใช้เนมสเปซ std;int max(int a, int b){ if(a> b) คืนค่า a; กลับ b;}int findMaxProdQuad (int arr [], int n) { int mx1 =-1000, mx2 =-1000, mx3 =-10000, mx4 =-1000; int mn1 =1,000, mn2 =1,000, mn3 =1,000, mn4 =1,000; สำหรับ (int i =0; i mx1){ mx4 =mx3; mx3 =mx2; mx2 =mx1; mx1 =arr[i]; } อื่น if(arr[i]> mx2){ mx4 =mx3; mx3 =mx2; mx2 =arr[i]; } อื่น if(arr[i]> mx3){ mx4 =mx3; mx3 =arr[i]; } อื่น if(arr[i]> mx4){ mx4 =arr[i]; } } int maxVal =สูงสุด ((mx1 * mx2 * mx3 * mx4), (mn1 * mn2 * mn3 * mn4)); maxVal =สูงสุด (maxVal, (mx1 * mx2 * mn1 * mn2)); คืนค่า maxVal;}int main () { int arr[] =(4, -2, 5, -6, 8}; int n =sizeof(arr) / sizeof(arr[0]); cout<<"ผลคูณสูงสุดของสี่เท่าคือ "< ผลลัพธ์
ผลคูณสูงสุดของสี่เท่าคือ 480อีกวิธีหนึ่งอาจเป็นการเรียงลำดับอาร์เรย์ จากนั้นค่าสูงสุดสี่ค่าและค่าต่ำสุดสี่ค่าจะเป็นจุดสิ้นสุดและจุดเริ่มต้นของอาร์เรย์ตามลำดับ จากนั้นแก้ตามวิธีแก้ปัญหาข้างต้นโดยหาค่าสูงสุดของสามชุดค่าผสมสูงสุดและต่ำสุด
โปรแกรมแสดงการดำเนินการตามแนวทางของเรา
ตัวอย่าง
#includeใช้เนมสเปซ std;int findMaxProdQuad(int arr[], int n){ sort(arr, arr + n); int maxVal =max((arr[n-1] * arr[n-2] * arr[n-3] * arr[n-4]), (arr[0] * arr[1] * arr[2] * arr[3])); maxVal =สูงสุด (maxVal, (arr[n-1] * arr[n-2] * arr[0] * arr[1])); คืนค่า maxVal;}int main(){ int arr[] ={4, -2, 5, -6, 8}; int n =sizeof(arr) / sizeof(arr[0]); cout<<"ผลคูณสูงสุดของสี่เท่าคือ "< ผลลัพธ์
ผลคูณสูงสุดของสี่เท่าคือ 480