n개 중에서 3개의 그룹으로 만드는 코드 c++

욥·2025년 10월 22일

백준 알고리즘

목록 보기
281/353

코드 분석 필요

#include <iostream>
#include <vector>
using namespace std;
#include <set>
#include <string>
#include <algorithm>

#include <queue>
#include <stack>




void find_partitions(std::vector<std::string>& items, int index, std::vector<std::vector<std::string>>& groups) {
    // 모든 항목이 할당되었을 때
    if (index == items.size()) {
        std::cout << "{ ";
        for (const auto& group : groups) {
            if (!group.empty()) {
                std::cout << "{";
                for (size_t i = 0; i < group.size(); ++i) {
                    std::cout << group[i] << (i < group.size() - 1 ? ", " : "");
                }
                std::cout << "} ";
            }
        }
        std::cout << "}" << std::endl;
        return;
    }

    // 현재 항목을 3개의 그룹 중 하나에 추가
    for (int i = 0; i < 3; ++i) {
        groups[i].push_back(items[index]);
        find_partitions(items, index + 1, groups);
        groups[i].pop_back(); // 백트래킹
    }
}

int main() {
    std::vector<std::string> items = { "A", "B", "C", "D" };
    std::vector<std::vector<std::string>> groups(3);

    find_partitions(items, 0, groups);
    return 0;
}

profile
🔥🔥🔥

0개의 댓글