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)

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

อาจมีหลายวิธีในการแก้ปัญหาที่กำหนด เช่น แนวทางไร้เดียงสาและแนวทางที่มีประสิทธิภาพ มาดูแนวทางไร้เดียงสากันก่อน .

  • ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มและคำนวณขนาดของอาร์เรย์แล้วส่งข้อมูลไปยังฟังก์ชัน

  • ประกาศการนับตัวแปรชั่วคราวเพื่อเก็บจำนวนคู่โดยมีผลรวมหารด้วย 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