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

ผลคูณขององค์ประกอบที่ไม่ซ้ำกัน (Distinct) ในอาเรย์ใน C++

โจทย์

เราได้รับอาเรย์ที่มีองค์ประกอบซ้ำหรือซ้ำกัน งานคือหาผลคูณขององค์ประกอบทั้งหมดที่ไม่ซ้ำหรือ distinct ในอาเรย์ที่กำหนดและแสดงผลลัพธ์

ตัวอย่าง

Input-: arr[] = {2, 1, 1, 2, 3, 4, 5, 5 } Output-: 120 Explanation-: เนื่องจาก 1, 2 และ 5 ซ้ำมากกว่า 1 ครั้ง เราจะพิจารณาเฉพาะครั้งแรกที่เกิดขึ้น ผลลัพธ์จะเป็น 1 * 2 * 3 * 4 * 5 = 120
Input-: arr[] = {1, 10, 9, 4, 2, 10, 10, 45, 4 } Output-: 32400 Explanation-: เนื่องจาก 10 และ 4 ซ้ำมากกว่า 1 ครั้ง เราจะพิจารณาเฉพาะครั้งแรกที่เกิดขึ้น ผลลัพธ์จะเป็น 1 * 10 * 9 * 4 * 2 * 45 = 32400

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

  • รับองค์ประกอบซ้ำในอาเรย์
  • สำหรับแนวทางที่ดีกว่า เรียงองค์ประกอบของอาเรย์ในลำดับขึ้น เพื่อให้ง่ายต่อการกำหนดว่าองค์ประกอบไหนซ้ำและไม่พิจารณามันสำหรับผลคูณ
  • หาองค์ประกอบ distinct ทั้งหมดในอาเรย์และคูณต่อเนื่องโดยเก็บผลลัพธ์
  • แสดงผลลัพธ์สุดท้ายเป็นผลคูณขององค์ประกอบ distinct ทั้งหมดในอาเรย์

อัลกอริทึม

เริ่ม
ขั้นตอน 1 → ประกาศฟังก์ชันหาผลคูณขององค์ประกอบ distinct ทั้งหมดในอาเรย์
  int find_Product(int arr[], int size)
  ประกาศและตั้งค่า int prod = 1
  สร้างตัวแปร unordered_set<int> s
  วนลูป For i = 0 ถึง size และ i++
    ถ้า s.find(arr[i]) == s.end()
      ตั้งค่า prod *= arr[i]
      เรียก s.insert(arr[i])
    จบถ้า
  จบวน
  คืนค่า prod
ขั้นตอน 2 → ใน main()
  ประกาศและตั้งค่า int arr[] = { 2, 1, 1, 2, 3, 4, 5, 5 }
  คำนวณขนาดอาเรย์ int size = sizeof(arr) / sizeof(int)
  เรียก find_Product(arr, size)
หยุด

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;
// ฟังก์ชันคำนวณผลคูณขององค์ประกอบที่ไม่ซ้ำ
int find_Product(int arr[], int size) {
  int prod = 1;
  unordered_set<int> s;
  for (int i = 0; i < size; i++) {
    if (s.find(arr[i]) == s.end()) {
      prod *= arr[i];
      s.insert(arr[i]);
    }
  }
  return prod;
}
int main() {
  int arr[] = { 2, 1, 1, 2, 3, 4, 5, 5 };
  int size = sizeof(arr) / sizeof(int);
  cout<<"product of all non-repeated elements are : "<<find_Product(arr, size);
  return 0;
}

ผลลัพธ์

product of all non-repeated elements are : 120