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

นับคู่ที่มีผลิตภัณฑ์อยู่ในอาร์เรย์ใน C++


เราได้รับอาร์เรย์ขององค์ประกอบประเภทจำนวนเต็มและงานคือการสร้างคู่จากอาร์เรย์ที่กำหนดและคำนวณผลคูณขององค์ประกอบในคู่และตรวจสอบว่าผลิตภัณฑ์ที่กำหนดมีอยู่ในอาร์เรย์ที่กำหนดหรือไม่

ป้อนข้อมูล − int arr[] ={6, 2, 3, 1, 5, 10}

ผลผลิต − จำนวนคู่ที่มีผลิตภัณฑ์อยู่ในอาร์เรย์เดียวกันคือ − 7

คำอธิบาย − คู่ที่สามารถสร้างได้จากอาร์เรย์ที่กำหนด ได้แก่ (6, 2), (6, 3), (6, 1), (6, 5), (6, 10), (2, 3), ( 2, 1), (2, 5), (2, 10), (3, 1), (3, 5), (3, 10), (1, 5), (1, 10), (5, 10). ดังนั้นคู่ที่มีค่าผลิตภัณฑ์ที่กำหนดในอาร์เรย์เดียวกันคือ (2, 3) เป็น 6, (6, 1) เป็น 6, (3, 1) เป็น 3, (2, 5) เป็น 10, (1, 5) เป็น 5, (2, 1) เป็น 2, (1, 10 ) เป็น 10.

ป้อนข้อมูล − int arr[] ={2, 4, 8, 5, 10}

ผลผลิต − จำนวนคู่ที่มีผลิตภัณฑ์อยู่ในอาร์เรย์เดียวกันคือ − 2

คำอธิบาย − คู่ที่สามารถสร้างได้จากอาร์เรย์ที่กำหนด ได้แก่ (2, 4), (2, 8), (2, 5), (2, 10), (4, 8), (4, 5), ( 4, 10), (8, 5), (8, 10), (5, 10) ดังนั้นคู่ที่มีค่าผลิตภัณฑ์ที่กำหนดในอาร์เรย์เดียวกันคือ (2, 4) เป็น 8, (5, 2) เป็น 10

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

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

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

  • ประกาศจำนวนตัวแปรชั่วคราวเพื่อเก็บจำนวนคู่ที่มีค่าผลิตภัณฑ์ที่มีอยู่ในอาร์เรย์ที่กำหนด

  • เริ่มการวนซ้ำ FOR จาก i ถึง 0 จนถึงขนาดของอาร์เรย์

  • ภายในลูป เริ่มวนใหม่ FOR จาก j ถึง i + 1 จนถึงขนาดอาร์เรย์

  • ภายในลูปคำนวณผลิตภัณฑ์เป็น arr[i] * arr[j]

  • เริ่มการวนซ้ำ FOR จาก k ถึง 0 จนถึงขนาดของอาร์เรย์

  • ภายใน K loop ให้ตรวจสอบ IF product =arr[k] แล้วเพิ่มจำนวนขึ้น 1

  • คืนจำนวน

  • พิมพ์ผล

แนวทางที่มีประสิทธิภาพ

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

  • ประกาศจำนวนตัวแปรชั่วคราวเพื่อเก็บจำนวนคู่ที่มีค่าผลิตภัณฑ์ที่มีอยู่ในอาร์เรย์ที่กำหนด

  • สร้างตัวแปรประเภท STL ที่กำหนดเป็นโปร

  • เริ่มการวนซ้ำ FOR จาก i ถึง 0 จนถึงขนาดของอาร์เรย์

  • ภายในลูป ให้แทรก arr[i] ใน set variable pro

  • เริ่มการวนซ้ำ FOR จาก i ถึง 0 จนถึงขนาดของอาร์เรย์

  • ภายในลูป เริ่มวนใหม่ FOR จาก j ถึง i + 1 จนถึงขนาดอาร์เรย์

  • ตั้งค่าผลิตภัณฑ์เป็น arr[i] * arr[j]

  • ตรวจสอบ IF pro.find(product) !=pro.end() แล้วเพิ่มจำนวนขึ้น 1

  • คืนจำนวน

  • พิมพ์ผลลัพธ์

ตัวอย่าง (แนวทางไร้เดียงสา)

#include <bits/stdc++.h>
using namespace std;
int product_pair(int arr[], int size){
   int product = 1;
   int count = 0;
   for(int i = 0 ; i<size ; i++){
      for(int j = i+1;j<size;j++){
         product = arr[i] * arr[j];
         for(int pro = 0 ; pro < size; pro++){
            if(product == arr[pro]){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {6, 2, 3, 1, 5, 10};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of pairs whose products exist in same array are: "<<product_pair(arr,size);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of pairs whose products exist in same array are: 7

ตัวอย่าง (แนวทางที่มีประสิทธิภาพ)

#include<bits/stdc++.h>
using namespace std;
int product_pair(int arr[], int size){
   set< int > pro;
   int count = 0;
   int product = 1;
   for (int i = 0 ; i < size; i++){
      pro.insert(arr[i]);
   }
   for (int i = 0 ; i < size; i++){
      for (int j = i + 1; j < size ; j++){
         product = arr[i] * arr[j];
         if(pro.find(product) != pro.end()){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = {6, 2, 3, 1, 5, 10};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Count of pairs whose products exist in same array are: "<<product_pair(arr,size);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of pairs whose products exist in same array are: 7