เราได้รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและงานคือการสร้างคู่จากอาร์เรย์ที่กำหนดและคำนวณผลรวมขององค์ประกอบในคู่และตรวจสอบว่าผลรวมที่กำหนดหาร 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)
วิธีการที่ใช้ในโปรแกรมด้านล่าง
สามารถมีหลายวิธีในการแก้ปัญหาที่กำหนด คือ วิธีเรียบง่ายและวิธีที่มีประสิทธิภาพ มาดู วิธีเรียบง่าย ก่อน
รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและคำนวณขนาดของอาร์เรย์และส่งข้อมูลไปยังฟังก์ชัน
ประกาศตัวแปรชั่วคราว count เพื่อเก็บจำนวนคู่ที่ผลรวมหาร 4 ลงตัว
เริ่มลูป FOR จาก i = 0 ถึงขนาดของอาร์เรย์
ภายในลูป เริ่มลูป FOR อีกอันจาก j = i + 1 ถึงขนาดของอาร์เรย์
ภายในลูป คำนวณผลรวมเป็น arr[i] + arr[j] และตรวจสอบ IF sum % 4 == 0 แล้วเพิ่ม count ขึ้น 1
คืนค่า count
พิมพ์ผลลัพธ์
วิธีที่มีประสิทธิภาพ
รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและคำนวณขนาดของอาร์เรย์และส่งข้อมูลไปยังฟังก์ชัน
ประกาศตัวแปรชั่วคราว count เพื่อเก็บจำนวนคู่ที่ผลรวมหาร 4 ลงตัว
สร้างอาร์เรย์ขนาด 4 เนื่องจากเราต้องตรวจสอบการหารลงตัวด้วย 4
เริ่มลูป FOR จาก i = 0 ถึงขนาดของอาร์เรย์
ภายในลูป ตั้ง temp เป็น arr[i] % 4 และ pre increment อาร์เรย์เป็น ++check[temp]
ตั้ง count เป็น new_arr[0] * (new_arr[0] - 1)/2
ตั้ง count เป็น count + new_arr[2] * (new_arr[2] - 1)/2
ตั้ง count เป็น count + new_arr[1] * new_arr[3]
คืนค่า count
พิมพ์ผลลัพธ์
ตัวอย่าง (วิธีเรียบง่าย)
#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