Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 세트의 주어진 크기의 모든 서브세트 인쇄

<시간/>

이 문제에서는 배열이 주어지고 배열의 요소를 사용하여 형성할 수 있는 주어진 크기 r의 모든 부분 집합을 인쇄해야 합니다.

주제를 더 잘 이해하기 위해 예를 들어 보겠습니다 -

Input:
array = {3, 5, 6}
r = 2
Output:
3 5
3 6
5 6

이 문제에서는 배열 숫자의 모든 조합을 찾아야 합니다. 그리고 이미 세트에 있는 r비트 조합을 제외합니다.

예시

#include <iostream>
using namespace std;
void printSubset(int arr[], int n, int r, int index, int data[], int i);
int main(){
   int arr[] = {3 , 5, 6};
   int r = 2;
   cout<<"The sets are : ";
   int n = sizeof(arr) / sizeof(arr[0]);
   int data[r];
   printSubset(arr, n, r, 0, data, 0);
   return 0;
}
void printSubset(int arr[], int n, int r, int index, int data[], int i){
   if (index == r) {
      for (int j = 0; j < r; j++)
         cout<<data[j]<<" ";
      cout<<endl;
      return;
   }
   if (i >= n)
      return;
   data[index] = arr[i];
   printSubset(arr, n, r, index + 1, data, i + 1);
   printSubset(arr, n, r, index, data, i + 1);
}

출력

세트는 -

3 5
3 6
5 6