C ++中按字典顺序排列的功率集

在这个问题中,我们得到了字符串str。我们的任务是按字典顺序打印此字符串元素的幂集。

幂集-集合的幂集是集合的所有子集的集合。由P(S)表示,其中s是集合。

示例-

S = {1, 2, 3} ;

p(S) = {{}, {1}, {1, 2}, {1, 3}, {2}, {2, 3}, {3}, {1,2,3}}

在此问题中,我们将字符串视为集合。因此,其字符将成为集合的元素。

让我们以一个例子来了解问题

输入-str =“ xyz”

输出-x xy xyz xz y yz z

为了解决这个问题,我们将不得不对数组进行排序,以便获得字典顺序。然后,我们将修复字符串的一个元素,然后递归调用剩下的元素,这些元素将生成所有子字符串。并丢弃第一个固定元素以获得下一个排列。

示例

展示我们解决方案实施情况的程序,

#include <bits/stdc++.h>

using namespace std;

void printAllSubsets(string str, int n, int index = -1, string subset = "") {

   if (index == n)

      return;

   cout<<subset<<"\n";

   for (int i = index + 1; i < n; i++) {

      subset+= str[i];

      printAllSubsets(str, n, i, subset);

      subset = subset.erase(subset.size() - 1);

   }

   return;

}

void GeneratePowerSet(string str) {

   sort(str.begin(), str.end());

   printAllSubsets(str, str.size());

}

int main() {

   string str = "xyz";

   cout<<"Power Set of the string '"<<str<<"' is :\n";

   GeneratePowerSet(str);

   return 0;

}

输出结果

Power Set of the string 'xyz' is:

x xy xyz xz y yz z

以上是 C ++中按字典顺序排列的功率集 的全部内容, 来源链接: utcz.com/z/331445.html

回到顶部