Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các cặp có sản phẩm tồn tại trong mảng trong C ++

Chúng ta được cung cấp một mảng gồm các phần tử kiểu số nguyên và nhiệm vụ là tạo các cặp từ mảng đã cho và tính tích các phần tử trong cặp và kiểm tra xem sản phẩm đã cho có trong mảng đã cho hay không.

Đầu vào - int arr [] ={6, 2, 3, 1, 5, 10}

Đầu ra - Số lượng các cặp có sản phẩm tồn tại trong cùng một mảng là - 7

Giải thích - Các cặp có thể tạo thành từ mảng đã cho là:(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). Vì vậy, các cặp có giá trị sản phẩm đã cho trong cùng một mảng là (2, 3) là 6, (6, 1) là 6, (3, 1) là 3, (2, 5) là 10, (1, 5) là 5, (2, 1) là 2, (1, 10) là 10.

Đầu vào - int arr [] ={2, 4, 8, 5, 10}

Đầu ra - Số lượng các cặp có sản phẩm tồn tại trong cùng một mảng là - 2

Giải thích - Các cặp có thể tạo thành từ mảng đã cho là:(2, 4), (2, 8), (2, 5), (2, 10), (4, 8), (4, 5), ( 4, 10), (8, 5), (8, 10), (5, 10). Vì vậy, các cặp có giá trị sản phẩm đã cho trong cùng một mảng là (2, 4) là 8, (5, 2) là 10.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Có thể có nhiều cách tiếp cận để giải quyết vấn đề đã cho, tức là cách tiếp cận ngây thơ và cách tiếp cận hiệu quả. Vì vậy, trước tiên chúng ta hãy xem xét cách tiếp cận đơn giản.

  • Nhập một mảng các phần tử số nguyên và tính toán kích thước của một mảng và truyền dữ liệu vào hàm

  • Khai báo số lượng biến tạm thời để lưu trữ số lượng các cặp với giá trị sản phẩm có sẵn trong mảng đã cho.

  • Bắt đầu vòng lặp FOR từ i đến 0 cho đến hết kích thước của một mảng

  • Bên trong vòng lặp, bắt đầu một vòng lặp FOR khác từ j đến i + 1 cho đến khi kích thước của một mảng

  • Bên trong vòng lặp, tính toán sản phẩm dưới dạng arr [i] * arr [j]

  • Bắt đầu một vòng lặp FOR khác từ k đến 0 cho đến hết kích thước của một mảng

  • Bên trong vòng lặp K, kiểm tra IF product =arr [k] sau đó tăng số lượng lên 1

  • Trả lại số lượng

  • In kết quả.

Cách tiếp cận hiệu quả

  • Nhập một mảng các phần tử số nguyên và tính toán kích thước của một mảng và truyền dữ liệu vào hàm

  • Khai báo số lượng biến tạm thời để lưu trữ số lượng các cặp với giá trị sản phẩm có sẵn trong mảng đã cho.

  • Tạo một biến kiểu STL được đặt là chuyên nghiệp

  • Bắt đầu vòng lặp FOR từ i đến 0 cho đến hết kích thước của một mảng

  • Bên trong vòng lặp, hãy chèn arr [i] vào biến đặt pro

  • Bắt đầu một vòng lặp FOR khác từ i đến 0 cho đến hết kích thước của một mảng

  • Bên trong vòng lặp, bắt đầu một vòng lặp FOR khác từ j đến i + 1 cho đến khi kích thước của một mảng

  • Đặt sản phẩm là arr [i] * arr [j]

  • Kiểm tra IF pro.find (product)! =Pro.end (), sau đó tăng số lượng lên 1

  • Trả lại số lượng

  • In kết quả.

Ví dụ (cách tiếp cận ngây thơ)

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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

Ví dụ (Phương pháp Tiếp cận Hiệu quả)

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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