i007.cc

i007.cc

优先队列-降维打击

香水的秘密

香水提炼自各种花香,给订花的集合F,如何列出所有可以制造的香水?

#include "pch.h"
#include <iostream>
#include <set>

std::set<std::string> GetWaters(std::set<std::string> flowers) {
    if (flowers.size() == 1) {
        std::set<std::string> ret{ *flowers.begin() };
        return ret;
    }
    else {
        auto begin = *flowers.begin();
        flowers.erase(flowers.begin());
        auto original = GetWaters(flowers);
        auto ret(original);
        ret.insert(begin);
        for (auto& it : original) {
            ret.insert(begin + it);
        }
        return ret;
    }
}

int main()
{
    std::set<std::string> flowers{ "1", "2", "3", "4"};
    auto ret = GetWaters(flowers);
    return 0;
}

 

发表回复