在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

以上是 在C ++中打印给定大小的所有子集 的全部内容, 来源链接: utcz.com/z/326704.html

回到顶部