c++ - 从 unordered_set 中获取给定大小 k 的所有子集?
问题描述
我有一个并且必须为我的集团程序unordered_set<int> vertices
生成所有大小的子集。k
我见过的所有解决方案(包括 SO 上的所有解决方案)都适用于数组,而不是集合。有没有像 Python 那样itertools.combinations
用 C++ 实现的算法?如果没有,我应该怎么做?转换为数组并使用标准算法?我仍然需要在程序中进一步使用集合,所以这会使我的内存需求增加一倍。
解决方案
当元素数量变大时,生成所有子集将花费大量时间(除了一些特殊情况,例如从 n 中选择 0、1、n-1 或 n 个元素),所以我不认为加倍内存需求会变成严重的问题,除非你有严格的内存限制。
出于这个原因,我认为您应该将集合转换为数组并应用已知算法。
推荐阅读
- c++ - 使用 PortAudio 和 libaudiodecoder 的 3D 音频
- c - 如何通过多字节数组移动一个字节
- c++ - wxColour 用 int 数组设置?
- git - Git对已标记为已合并的文件进行三向合并
- javascript - PHP:将javascript对象字符串转换为php数组
- mysql - Heroku 上的 Rails 布尔值不会从 0 切换到 1
- linux - 制作一个 bash 脚本来刷新值,而无需像 TOP 命令那样向下滚动终端
- php - Docker 从 git 下载代码并运行 php 内部服务器
- dart - 如何在 Hot Reload 上使用 Provider 维护 Flutter Global BloC 状态?
- python - 如何在if语句中调用函数并保存返回值