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

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

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

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

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

  • เริ่มลูป FOR จาก i = 0 ถึงขนาดของอาร์เรย์

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

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

  • เริ่มลูป FOR อีกอันจาก k = 0 ถึงขนาดของอาร์เรย์

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

  • คืนค่า count

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

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

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

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

  • สร้างตัวแปรประเภท STL set เป็น pro

  • เริ่มลูป FOR จาก i = 0 ถึงขนาดของอาร์เรย์

  • ภายในลูป ใส่ arr[i] ลงใน set ตัวแปร pro

  • เริ่มลูป FOR อีกอันจาก i = 0 ถึงขนาดของอาร์เรย์

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

  • ตั้ง product เป็น arr[i] * arr[j]

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

  • คืนค่า count

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

ตัวอย่าง (วิธีเรียบง่าย)

#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