首页 > 解决方案 > 为 X 位数生成 0-9 的所有唯一组合

问题描述

我无法想出逻辑来为 X 位数生成所有可能的 0-9 唯一组合。

例如,如果我想要总共 5 位数字的所有唯一组合,它将使用 0-9 生成它们。(01234、01235 等)

如果您对我的问题有任何简单而有创意的解决方案,我很想听听。我必须在 MASM 中实现它,但任何使用 C++ 的解决方案都不应该成为问题。

标签: c++assemblymasmmasm32

解决方案


在 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()));
}

演示


推荐阅读