显示字符串的集合和子集
Displaying sets and subsets of a string
我正在尝试找到子集并用二进制表示输出它们。
例:
000:EMPTY
001:C
010:B
011:B C
100:A
101:A C
110:A B
111:A B C
我有以下代码可以找到所有子集,但不确定二进制文件?
#include <iostream>
using namespace std;
void recsub(string sofar, string rest){
if(rest=="") cout<<sofar<<endl;
else{
recsub(sofar+rest[0], rest.substr(1)); //including first letter
recsub(sofar, rest.substr(1)); //recursion without including first letter.
}
}
void listsub(string str){
recsub("",str);
}
int main(){
listsub("abc");
return 0;
}
你可以用其他方式做,先生成mask
,然后生成匹配的字符串。
#include <iostream>
using namespace std;
void listsub(const string &str) {
auto n = str.size();
// iterate over every binary representation
for (size_t k = 0; k < (1u << n); ++k) {
string binary;
string subset;
// iterate over every bit from right to left
for (size_t bit = n ; bit > 0; --bit) {
bool has_bit = (k & (1 << (bit - 1)));
binary.push_back(has_bit ? '1' : '0');
if (has_bit) {
subset.push_back(str[n - bit]);
}
}
cout << binary << ':' << subset << endl;
}
}
int main() {
listsub("abc");
return 0;
}
相关文章:
- 处理多个异常集合的C++方法
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- 如何将ampl中的集合表示为c++中的向量
- 显示字符串的集合和子集
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 打印给定大小的集合的所有子集并计算子集
- 给定一组正整数 <=k 及其 n 个子集,找到哪些子集对给出原始集合的并集
- (也许是NP-Hard)求一个集合的子集总数,使得每个子集在与其所有元素相乘时的值都大于X
- 如何生成集合的所有唯一子集
- 动态规划:计算集合中存在多少个升序子集
- 递归函数,用于使用位掩码 c++ 显示集合的所有子集
- 拘泥于处理(数学)集合和子集的练习
- 生成给定集合的子集(使用递归)的程序的执行涉及哪些步骤
- 用于访问集合c++的排序子集的数据结构
- 一个多索引,其中一个索引是整个集合的子集
- 从一组集合中找到集合子集的最佳方法
- 使用0来显示不存在元素的集合的子集
- 从一个集合生成所有可能的有序子集
- 如何将一个集合分成K个子集,使得子集中元素的和最小
- 生成一个集合的所有子集,使它们的集合等于整个集合