c++ - 为 X 位数生成 0-9 的所有唯一组合
问题描述
我无法想出逻辑来为 X 位数生成所有可能的 0-9 唯一组合。
例如,如果我想要总共 5 位数字的所有唯一组合,它将使用 0-9 生成它们。(01234、01235 等)
如果您对我的问题有任何简单而有创意的解决方案,我很想听听。我必须在 MASM 中实现它,但任何使用 C++ 的解决方案都不应该成为问题。
解决方案
在 C++ 中,您可以使用类似的东西:
template <typename T>
void Combination(const std::vector<T>& v, std::size_t count)
{
assert(count <= v.size());
std::vector<bool> bitset(v.size() - count, 0);
bitset.resize(v.size(), 1);
do {
for (std::size_t i = 0; i != v.size(); ++i) {
if (bitset[i]) {
std::cout << v[i] << " ";
}
}
std::cout << std::endl;
} while (std::next_permutation(bitset.begin(), bitset.end()));
}
推荐阅读
- python - 在 conda 环境中安装 PyQT
- flutter - Flutter - 在复制到服务器时修剪 0.5 秒的 mp3 结尾而不重新处理整个文件?
- android - 用于互联网连接的广播接收器,当热点开启时,它将调用两次
- azure - Azure Blob Storage Informatica 写入行为
- windows-installer - 在调查与 GPO 部署相关的错误时,如何获得更详细/详细的 Windows Installer 日志?
- c++ - C++ 模板模板类型推断
- sql - Hana 中的 SQL 触发器以捕获被删除的每一行的时间戳
- wordpress - Wordpress 层次分类法之间的链接
- javascript - 插入
- javascript - Vuejs 某些组件没有构建