ได้รับสองอาร์เรย์ arr1[] และ arr2[] ขนาด n1 และ n2 ตามลำดับ งานคือหาผลคูณขององค์ประกอบสูงสุดของอาร์เรย์แรก arr1[] และองค์ประกอบต่ำสุดของอาร์เรย์ที่สอง arr2[]
เช่น มีองค์ประกอบใน arr1[] = {5, 1, 6, 8, 9} และ arr2[] = {2, 9, 8, 5, 3} ดังนั้นองค์ประกอบสูงสุดใน arr1 คือ 9 และองค์ประกอบต่ำสุดใน arr2 คือ 2 ผลคูณของทั้งสองคือ 9*2 = 18 ต้องเขียนโปรแกรมแก้ปัญหานี้
ตัวอย่าง
อินพุต
arr1[] = {6, 2, 5, 4, 1} arr2[] = {3, 7, 5, 9, 6}
เอาต์พุต
18
คำอธิบาย
MAX(arr1) * MIN(arr2) → 6 * 3 = 18
อินพุต
arr1[] = { 2, 3, 9, 11, 1 } arr2[] = { 5, 4, 2, 6, 9 }
เอาต์พุต
22
วิธีการแก้ปัญหา
- รับสองอาร์เรย์ arr1 และ arr2 เป็นอินพุต
- เรียงทั้งสองอาร์เรย์จากน้อยไปมาก
- คูณองค์ประกอบสุดท้ายของ arr1 (ค่าสูงสุด) และองค์ประกอบแรกของ arr2 (ค่าต่ำสุด)
- คืนค่าผลคูณ
อัลกอริทึม
Start
In function int sortarr(int arr[], int n)
Step 1: ประกาศและกำหนด temp
Step 2: For i = 0 และ i < n-1 และ ++i
For j = i+1 และ j < n และ j++
ถ้า arr[i] > arr[j] แล้ว
กำหนด temp = arr[i]
กำหนด arr[i] = arr[j]
กำหนด arr[j] = temp
In Function int minMaxProduct(int arr1[], int arr2[], int n1, int n2)
Step 1: เรียก sortarr(arr1, n1)
Step 2: เรียก sortarr(arr2, n2)
Step 3: Return (arr1[n1 - 1] * arr2[0])
In Function int main()
Step 1: ประกาศและกำหนด arr1[] = { 2, 3, 9, 11, 1 }
Step 2: ประกาศและกำหนด arr2[] = { 5, 4, 2, 6, 9 }
Step 3: ประกาศและกำหนด n1, n2 และกำหนดขนาดของทั้งสองอาร์เรย์
Step 4: Print minMaxProduct(arr1, arr2, n1, n2)
Stop
ตัวอย่างโค้ด
#include <stdio.h>
int sortarr(int arr[], int n) {
int temp;
for (int i = 0; i < n-1; ++i) {
for(int j = i+1; j < n; j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return 0;
}
int minMaxProduct(int arr1[], int arr2[], int n1, int n2) {
// เรียงอาร์เรย์เพื่อได้ค่าสูงสุดและต่ำสุด
sortarr(arr1, n1);
sortarr(arr2, n2);
// คืนค่าผลคูณของค่าสูงสุดและต่ำสุด
return arr1[n1 - 1] * arr2[0];
}
int main() {
int arr1[] = { 2, 3, 9, 11, 1 };
int arr2[] = { 5, 4, 2, 6, 9 };
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
printf("%d\n", minMaxProduct(arr1, arr2, n1, n2));
return 0;
}
ผลลัพธ์
หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —
22