在 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

更新於: 17-Jan-2020

703 次檢視

開啟你的 職業生涯

完成該課程即可獲得認證

開始
廣告
© . All rights reserved.