Permutations without recursive function call

前端 未结 8 1060
北荒
北荒 2020-11-27 04:15

Requirement: Algorithm to generate all possible combinations of a set , without duplicates , or recursively calling function to return results.

The majority , if not

8条回答
  •  甜味超标
    2020-11-27 05:02

    A fairly simple C++ code without recursion.

    #include 
    #include 
    #include 
    #include 
    #include 
    
    // Integer data
    void print_all_permutations(std::vector &data) {
        std::stable_sort(std::begin(data), std::end(data));
        do {
            std::copy(data.begin(), data.end(), std::ostream_iterator(std::cout, " ")), std::cout << '\n';
        } while (std::next_permutation(std::begin(data), std::end(data)));
    }
    
    // Character data (string)
    void print_all_permutations(std::string &data) {
        std::stable_sort(std::begin(data), std::end(data));
        do {
            std::copy(data.begin(), data.end(), std::ostream_iterator(std::cout, " ")), std::cout << '\n';
        } while (std::next_permutation(std::begin(data), std::end(data)));
    }
    
    int main()
    {
        std::vector v({1,2,3,4});
        print_all_permutations(v);
    
        std::string s("abcd");
        print_all_permutations(s);
    
        return 0;
    }
    

    We can find next permutation of a sequence in linear time.

提交回复
热议问题