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

นับชุดย่อยที่ตรงตามเงื่อนไขที่กำหนดใน C++


กำหนดอาร์เรย์ของตัวเลขและจำนวนเต็ม x เป็นอินพุต เป้าหมายคือการหาชุดย่อยทั้งหมดของ arr[] ที่แต่ละองค์ประกอบของชุดนั้นและผลรวมของชุดย่อยทั้งหมดหารด้วย x ลงตัว

ตัวอย่าง

อินพุต

arr[] = {1,2,3,4,5,6} x=3

ผลลัพธ์

Count of subsets that satisfy the given condition :3

คำอธิบาย

The subsets will be:
[3], [6], [3,6]

อินพุต

arr[] = {1,2,3,4,5,6} x=4

ผลลัพธ์

Count of subsets that satisfy the given condition :1

คำอธิบาย

The subsets will be:
[4]

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

ในวิธีนี้เราจะนับองค์ประกอบของ arr[] ที่หารด้วย x ลงตัวแล้วจึงคืนค่า 2 count -1 ตามจำนวนชุดย่อยที่ต้องการ

  • ใช้อาร์เรย์จำนวนเต็ม arr[].

  • รับ x เป็นอินพุต

  • ฟังก์ชั่น count(int arr[], int n, int x) รับอาร์เรย์และ x และคืนค่าจำนวนชุดย่อยที่ตรงตามเงื่อนไขที่กำหนด

  • ถ้า x เป็น 1 มันจะแบ่งองค์ประกอบทั้งหมด ให้กลับ

ตัวอย่าง

#include <bits/stdc++.h>
#define ll long long int
using namespace std;
int sub_sets(int arr[], int size, int val){
int count = 0;
if (val == 1){
   count = pow(2, size) − 1;
      return count;
   }
   for (int i = 0; i < size; i++){
      if (arr[i] % val == 0){
         count++;
      }
   }
   count = pow(2, count) − 1;
   return count;
}
int main(){
   int arr[] = { 4, 6, 1, 3, 8, 10, 12 }, val = 4;
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of sub−sets that satisfy the given condition are: "<<sub_sets(arr, size, val);
   return 0;
}

ผลลัพธ์

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

Count of sub−sets that satisfy the given condition are: 7