Esempio n. 1
0
void
generateCombinations(const size_t n, const size_t k, 
                     Permutation perm,
                     vector<Permutation>& rPerms)
{
    if (perm.size() == k){
        rPerms.push_back(perm);
        return;
    }
    
    perm.push_back(0);
    for (size_t i = 0; i < n; ++i){
        perm.back() = i;
        generateCombinations(n, k, perm, rPerms);
    }
}
Esempio n. 2
0
void
generatePermutations(const size_t n, const size_t k, 
                     Permutation perm,
                     vector<Permutation>& rPerms)
{
    if (perm.size() == k){
        rPerms.push_back(perm);
        return;
    }
    
    perm.push_back(0);
    for (size_t i = 0; i < n; ++i){
        bool used = false;
        for (size_t m = 0; m + 1 < perm.size(); ++m)
            if (perm[m] == i){
                used = true;
                break;
            }
        if (!used){
            perm.back() = i;
            generatePermutations(n, k, perm, rPerms);
        }
    }
}