เราได้รับอาร์เรย์ขององค์ประกอบประเภทจำนวนเต็ม และภารกิจคือการสร้างคู่จากอาร์เรย์ที่กำหนดและคำนวณผลรวมขององค์ประกอบในคู่และตรวจสอบว่าผลรวมที่กำหนดนั้นหารด้วย 4 ลงตัวหรือไม่
ป้อนข้อมูล − int arr[] ={4, 1, 2, 0, 2}
ผลผลิต − นับคู่ในอาร์เรย์ที่ผลรวมหารด้วย 4 ลงตัวคือ − 2
คำอธิบาย − คู่ที่สามารถสร้างได้จากอาร์เรย์ที่กำหนด ได้แก่ (4, 1) =5(หารด้วย 4) ไม่ลงตัว, (4, 2) =6(ไม่หารด้วย 4), (4, 0) =4(หารลงตัว) 4), (1, 2) =3(หารด้วย 4), (1, 0) =1(หารด้วย 4) ไม่ลงตัว, (2, 0) =2(หารไม่ได้ด้วย 4), (2, 2 ) =4(หารด้วย 4), (0, 2) =2(หารด้วย 4) ไม่ลงตัว ดังนั้นคู่ที่มีผลรวมหารด้วย 4 ลงตัวคือ (4, 0) และ (2, 2)
ป้อนข้อมูล − int arr[] ={2, 4, 8, 6, 10}
ผลผลิต − นับคู่ในอาร์เรย์ที่ผลรวมหารด้วย 4 ลงตัวคือ − 4
คำอธิบาย − คู่ที่สามารถสร้างได้จากอาร์เรย์ที่กำหนด ได้แก่ (2, 4) =6(หารด้วย 4) ไม่ลงตัว, (2, 8) =10(หารไม่ได้ด้วย 4), (2, 6) =8(หารลงตัว โดย 4), (2, 10) =12(หารด้วย 4), (4, 8) =12(หารด้วย 4), (4, 6) =10(หารไม่ได้ด้วย 4), (4, 10) =14(หารด้วย 4) ไม่ลงตัว, (8, 6) =14(หารด้วย 4) ไม่ลงตัว, (8, 10) =18(หารไม่ได้ด้วย 4), (6, 10) =16(หารด้วย 4) ดังนั้นคู่ที่หารด้วย 4 ลงตัวคือ (2, 10), (2, 6), (4, 8) และ (6, 10)
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
อาจมีหลายวิธีในการแก้ปัญหาที่กำหนด เช่น แนวทางไร้เดียงสาและแนวทางที่มีประสิทธิภาพ มาดูแนวทางไร้เดียงสากันก่อน .
-
ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มและคำนวณขนาดของอาร์เรย์แล้วส่งข้อมูลไปยังฟังก์ชัน
-
ประกาศการนับตัวแปรชั่วคราวเพื่อเก็บจำนวนคู่โดยมีผลรวมหารด้วย 4 ลงตัว
-
เริ่มการวนซ้ำ FOR จาก i ถึง 0 จนถึงขนาดของอาร์เรย์
-
ภายในลูป เริ่มวนใหม่ FOR จาก j ถึง i + 1 จนถึงขนาดอาร์เรย์
-
ภายในลูปคำนวณผลรวมเป็น arr[i] + arr[j] และตรวจสอบ IF sum % 4 ==0 แล้วเพิ่มจำนวนขึ้น 1
-
คืนจำนวน
-
พิมพ์ผล
แนวทางที่มีประสิทธิภาพ
-
ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มและคำนวณขนาดของอาร์เรย์แล้วส่งข้อมูลไปยังฟังก์ชัน
-
ประกาศการนับตัวแปรชั่วคราวเพื่อเก็บจำนวนคู่โดยมีผลรวมหารด้วย 4 ลงตัว
-
สร้างอาร์เรย์ขนาด 4 เนื่องจากเราต้องตรวจสอบการหารด้วย 4
-
เริ่มการวนซ้ำ FOR จาก i ถึง 0 จนถึงขนาดของอาร์เรย์
-
ภายในลูป ตั้งค่า temp เป็น arr[i] % 4 และเพิ่มอาร์เรย์ล่วงหน้าเป็น ++check[temp]
-
ตั้งเป็น new_arr[0] * (new_arr[0] - 1)/2
-
ตั้งนับเป็น count + new_arr[2] * (new_arr[2] - 1)/2
-
ตั้งนับเป็น count + new_arr[1] * new_arr[3]
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง (แนวทางไร้เดียงสา)
#include <iostream> using namespace std; int pair_4(int arr[], int size){ int count = 0; for(int i = 0 ;i <size ; i++){ for(int j = i+1; j<size; j++){ int sum = arr[i] + arr[j]; if(sum % 4 == 0){ count++; } } } return count; } int main(){ int arr[] = {4, 1, 2, 0, 2}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count pairs in array whose sum is divisible by 4 are: "<<pair_4(arr, size); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count pairs in array whose sum is divisible by 4 are: 2
ตัวอย่าง (แนวทางที่มีประสิทธิภาพ)
#include <iostream> using namespace std; int pair_4(int arr[], int size){ int temp = 0; int count = 0; int check[] = {0, 0, 0, 0}; for (int i = 0; i < size; i++){ temp = arr[i] % 4; ++check[temp]; } count = check[0] * (check[0] - 1) / 2; count = count + check[2] * (check[2] - 1) / 2; count = count + check[1] * check[3]; return count; } int main(){ int arr[] = {4, 1, 2, 0, 2}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count pairs in array whose sum is divisible by 4 are: "<<pair_4(arr, size); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count pairs in array whose sum is divisible by 4 are: 2