Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ในอาร์เรย์ที่ผลรวมหาร 4 ลงตัวใน C++


เราได้รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและงานคือการสร้างคู่จากอาร์เรย์ที่กำหนดและคำนวณผลรวมขององค์ประกอบในคู่และตรวจสอบว่าผลรวมที่กำหนดหาร 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